<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>阿英工作室</title><link>http://aying7.com/</link><description>Good Luck To You!</description><item><title>为tkinter的画布组件增加滚动条，用类的方式写代码</title><link>http://aying7.com/post/8.html</link><description>&lt;p&gt;　以前我做了一个代码，就是为tkinter画布canvas做水平和垂直滚动条，代码可用于浏览大尺寸的图片，现在我把它改写一下，以类的方式来写。&lt;/p&gt;&lt;p&gt;　在代码中，要注意设定图片的滚动尺寸，因为我的图片尺寸是425X200，所以我设定的滚动条的滚动范围就正好是这个图片的尺寸 。&lt;/p&gt;&lt;p&gt;　代码如下：&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 冫亓垚&lt;/p&gt;&lt;pre class=&quot;brush:python;toolbar:false&quot;&gt;from&amp;nbsp;tkinter&amp;nbsp;import&amp;nbsp;*
class&amp;nbsp;App(Frame):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;def&amp;nbsp;__init__(self,master=None):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.img1=PhotoImage(file=&amp;#39;car.png&amp;#39;)&amp;nbsp;#&amp;nbsp;先在代码目录里准备好一个图片
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Frame.__init__(self,master)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.grid()&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.creat()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;def&amp;nbsp;creat(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.scr1=Scrollbar(root)&amp;nbsp;&amp;nbsp;#&amp;nbsp;垂直滚动条
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.scr1.grid(row=0,column=1,sticky=NS)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.scr2=Scrollbar(orient=HORIZONTAL)&amp;nbsp;#&amp;nbsp;水平滚动条
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.scr2.grid(row=1,column=0,sticky=EW)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.can1=Canvas(self,width=200,height=150,bg=&amp;#39;lightblue&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.can1.grid(row=0,column=0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.can1.create_image(0,0,image=self.img1,anchor=NW)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.can1.config(xscrollcommand&amp;nbsp;=&amp;nbsp;self.scr2.set)&amp;nbsp;#&amp;nbsp;画布与水平滚动条互相绑定
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.scr2.config(command&amp;nbsp;=self.can1.xview)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.can1.config(yscrollcommand&amp;nbsp;=&amp;nbsp;self.scr1.set)&amp;nbsp;#&amp;nbsp;画布与垂直滚动条互相绑定
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.scr1.config(command&amp;nbsp;=&amp;nbsp;self.can1.yview)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.can1.config(scrollregion=(0,0,425,200))&amp;nbsp;#&amp;nbsp;设定滚动的范围

root=Tk()
root.rowconfigure(0,weight=1)&amp;nbsp;
root.columnconfigure(0,weight=1)&amp;nbsp;
root.title(&amp;#39;画布滚动条&amp;nbsp;aying7.com&amp;#39;)
app=App(root)
app.mainloop()&lt;/pre&gt;&lt;p&gt;运行图：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://aying7.com/zb_users/upload/2021/11/202111240840301774096.gif&quot; alt=&quot;未命名.GIF&quot; title=&quot;未命名.GIF&quot;/&gt;&lt;/p&gt;&lt;p&gt;以上代码由 &lt;a href=&quot;http://www.aying7.com&quot; target=&quot;_self&quot;&gt;aying7.com&lt;/a&gt; 测试成功&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 24 Nov 2021 08:32:25 +0800</pubDate></item><item><title>tkinter用类的方式做一个简易的图片浏览器</title><link>http://aying7.com/post/7.html</link><description>&lt;p&gt;　　简单的程序，我一般都不用类的方式来做。现在发现用类的方式来写代码，有点不习惯了。下面是一个图片浏览器的代码，是以类的方式来写的，学tkinter的新手可以跟我一起来学习一下。冫亓垚&lt;/p&gt;&lt;p&gt;　　以下是代码：&lt;/p&gt;&lt;pre class=&quot;brush:python;toolbar:false&quot;&gt;import&amp;nbsp;tkinter&amp;nbsp;as&amp;nbsp;tk,os
class&amp;nbsp;Application(tk.Frame):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;def&amp;nbsp;__init__(self,master=None):&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.files=os.listdir(&amp;#39;.\\image&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.index=0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.img=tk.PhotoImage(file=&amp;#39;.\\image&amp;#39;+&amp;#39;\\&amp;#39;+self.files[self.index])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tk.Frame.__init__(self,master)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.pack()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.createWidgets()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;def&amp;nbsp;createWidgets(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.la1=tk.Label(self,width=350,height=250)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.la1[&amp;#39;image&amp;#39;]=self.img
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.la1.pack()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.f=tk.Frame()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.f.pack()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.prev=tk.Button(self.f,text=&amp;#39;上一张&amp;#39;,command=self.prev)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.next=tk.Button(self.f,text=&amp;#39;下一张&amp;#39;,command=self.next)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.prev.pack(side=tk.LEFT)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.next.pack(side=tk.RIGHT)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;def&amp;nbsp;prev(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.show(-1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;def&amp;nbsp;next(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.show(1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;def&amp;nbsp;show(self,n):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.index&amp;nbsp;+=&amp;nbsp;n
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;self.index&amp;nbsp;&amp;lt;&amp;nbsp;0&amp;nbsp;:&amp;nbsp;self.index=len(self.files)&amp;nbsp;-1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;self.index&amp;gt;&amp;nbsp;len(self.files)&amp;nbsp;-1&amp;nbsp;:&amp;nbsp;self.index=0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.img=&amp;nbsp;tk.PhotoImage(file=&amp;#39;.\\image&amp;#39;&amp;nbsp;+&amp;nbsp;&amp;#39;\\&amp;#39;&amp;nbsp;+&amp;nbsp;self.files[self.index])
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.la1[&amp;#39;image&amp;#39;]&amp;nbsp;=&amp;nbsp;self.img
root=tk.Tk()
root.title(&amp;#39;简易图片浏览器&amp;#39;)
app=Application(master=root)
app.mainloop()&amp;nbsp;#&amp;nbsp;来自&amp;nbsp;aying7.com&lt;/pre&gt;&lt;p&gt;运行图&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://aying7.com/zb_users/upload/2021/11/202111232107426442460.gif&quot; alt=&quot;未命名.GIF&quot; title=&quot;未命名.GIF&quot;/&gt;&lt;/p&gt;&lt;p&gt;以上代码由 &lt;a href=&quot;http://www.aying7.com&quot; target=&quot;_self&quot;&gt;aying7.com&lt;/a&gt; 测试成功&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 23 Nov 2021 21:01:37 +0800</pubDate></item><item><title>tkinter 判断复选框,多选按钮checkbutton组件的选中情况</title><link>http://aying7.com/post/6.html</link><description>&lt;p&gt;&amp;nbsp; &amp;nbsp; 判断多选按钮，即复选框的选中值，也要从判断多选按钮绑定的值来判断，绑定变量可以绑定一个布尔型变量，用变量的get()来获取变量值。&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; 有多少个多选按钮，就创建多少个布尔变量，当用变量的get()方法获取的值为True，就表明这个复选框被选中。&amp;nbsp; &amp;nbsp; &amp;nbsp;冫亓垚&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;以下是代码：&lt;/p&gt;&lt;pre class=&quot;brush:python;toolbar:false&quot;&gt;from&amp;nbsp;tkinter&amp;nbsp;import&amp;nbsp;*

def&amp;nbsp;selectjob():&amp;nbsp;#&amp;nbsp;判断函数
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str=&amp;#39;选择：&amp;#39;&amp;nbsp;&amp;nbsp;#&amp;nbsp;设选择文本的初值&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;var1.get()==True:&amp;nbsp;&amp;nbsp;#&amp;nbsp;获取变量1的值，为True即勾选中了，为0就是没有勾选
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str=str+&amp;#39;&amp;nbsp;&amp;#39;+ch1[&amp;#39;text&amp;#39;]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;var2.get()==True:&amp;nbsp;&amp;nbsp;#&amp;nbsp;获取变量2的值，为True即勾选中了，为0就是没有勾选
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str=str+&amp;#39;&amp;nbsp;&amp;#39;+ch2[&amp;#39;text&amp;#39;]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;var3.get()==True:&amp;nbsp;&amp;nbsp;#&amp;nbsp;获取变量2的值，为True即勾选中了，为0就是没有勾选
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str=str+&amp;#39;&amp;nbsp;&amp;#39;+ch3[&amp;#39;text&amp;#39;]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;la1.config(text=str)

root=Tk()&amp;nbsp;#&amp;nbsp;来自&amp;nbsp;aying7.com

la1=Label(root,text=&amp;#39;暂没有选中项&amp;#39;,bg=&amp;#39;lightyellow&amp;#39;)
la1.pack()

var1=DoubleVar()&amp;nbsp;#&amp;nbsp;创建布尔型变量1
var2=DoubleVar()&amp;nbsp;#&amp;nbsp;创建布尔型变量2
var3=DoubleVar()&amp;nbsp;#&amp;nbsp;创建布尔型变量3

ch1=Checkbutton(root,text=&amp;quot;田径&amp;quot;,variable=var1,command=selectjob)&amp;nbsp;
ch1.pack()
ch2=Checkbutton(root,text=&amp;quot;游泳&amp;quot;,variable=var2,command=selectjob)&amp;nbsp;
ch2.pack()
ch3=Checkbutton(root,text=&amp;quot;足球&amp;quot;,variable=var3,command=selectjob)&amp;nbsp;
ch3.pack()

root.mainloop()&lt;/pre&gt;&lt;p&gt;运行图&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://aying7.com/zb_users/upload/2021/11/202111181501126137703.png&quot; alt=&quot;1.PNG&quot; title=&quot;1.PNG&quot;/&gt;&lt;/p&gt;&lt;p&gt;以上代码由 &lt;a href=&quot;http://www.aying7.com&quot; target=&quot;_self&quot;&gt;aying7.com&lt;/a&gt; 测试成功&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 18 Nov 2021 14:56:10 +0800</pubDate></item><item><title>tkinter获取，判断选中单选按钮的选项值</title><link>http://aying7.com/post/5.html</link><description>&lt;p&gt;&amp;nbsp; &amp;nbsp; 单选框按钮（radiobutton)要先绑定一个变量，然后用变量的get()来获取你选中的单选框按钮选项。&amp;nbsp; &amp;nbsp;冫亓垚&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; 你绑定的变量，类型可以是整型&amp;nbsp;或&amp;nbsp;字符型，下面分别以这2种情况来判断选中单选按钮的选项值&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; 第1种情况，绑定的变量是整型，代码如下：&lt;/p&gt;&lt;pre class=&quot;brush:python;toolbar:false&quot;&gt;from&amp;nbsp;tkinter&amp;nbsp;import&amp;nbsp;*
root=Tk()

def&amp;nbsp;select():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;var.get()==0:&amp;nbsp;#&amp;nbsp;变量的值与单选按钮的value值对比来判断
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;la1.config(text=ra1[&amp;#39;text&amp;#39;]+&amp;#39;被选中&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elif&amp;nbsp;var.get()==1:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;la1.config(text=ra2[&amp;#39;text&amp;#39;]+&amp;#39;被选中&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;la1.config(text=ra3[&amp;#39;text&amp;#39;]+&amp;#39;被选中&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
var=IntVar()&amp;nbsp;#&amp;nbsp;创建变量var，并预先选中value为2的单选按钮
var.set(1)

la1=Label(root,text=&amp;#39;初始化&amp;#39;,bg=&amp;#39;lightgreen&amp;#39;)
la1.pack(fill=X)

ra1=Radiobutton(root,text=&amp;#39;西瓜&amp;#39;,variable=var,value=0,command=select)
ra1.pack()
ra2=Radiobutton(root,text=&amp;#39;苹果&amp;#39;,variable=var,value=1,command=select)
ra2.pack()
ra3=Radiobutton(root,text=&amp;#39;葡萄&amp;#39;,variable=var,value=2,command=select)
ra3.pack()

root.mainloop()&lt;/pre&gt;&lt;p&gt;运行图&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://aying7.com/zb_users/upload/2021/11/202111181423542002040.png&quot; alt=&quot;1.PNG&quot; title=&quot;1.PNG&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;第2种情况，绑定的变量是字符串型，为了编程方便，单选框按钮的text和value的取值都是取一样的值，都取单行框按钮的显示文本。&lt;/p&gt;&lt;p&gt;代码如下：&lt;/p&gt;&lt;pre class=&quot;brush:python;toolbar:false&quot;&gt;from&amp;nbsp;tkinter&amp;nbsp;import&amp;nbsp;*
root=Tk()

def&amp;nbsp;select():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;la1.config(text=var.get()+&amp;#39;被选中&amp;#39;)

var=StringVar()&amp;nbsp;#&amp;nbsp;创建变量var，并预先选中value为苹果的单选按钮
var.set(&amp;#39;苹果&amp;#39;)

la1=Label(root,text=&amp;#39;初始化&amp;#39;,bg=&amp;#39;lightblue&amp;#39;)
la1.pack(fill=X)

ra1=Radiobutton(root,text=&amp;#39;西瓜&amp;#39;,variable=var,value=&amp;#39;西瓜&amp;#39;,command=select)
ra1.pack()
ra2=Radiobutton(root,text=&amp;#39;苹果&amp;#39;,variable=var,value=&amp;#39;苹果&amp;#39;,command=select)
ra2.pack()
ra3=Radiobutton(root,text=&amp;#39;葡萄&amp;#39;,variable=var,value=&amp;#39;葡萄&amp;#39;,command=select)
ra3.pack()

root.mainloop()&lt;/pre&gt;&lt;p&gt;运行图&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://aying7.com/zb_users/upload/2021/11/202111181430377128937.png&quot; alt=&quot;1.PNG&quot; title=&quot;1.PNG&quot;/&gt;&lt;/p&gt;&lt;p&gt;以上代码由 &lt;a href=&quot;http://www.aying7.com&quot; target=&quot;_self&quot;&gt;aying7.com&lt;/a&gt; 测试成功&lt;/p&gt;</description><pubDate>Thu, 18 Nov 2021 14:09:06 +0800</pubDate></item><item><title>tkinter 无标题栏窗体，鼠标可移动，还可调节大小</title><link>http://aying7.com/post/4.html</link><description>&lt;p&gt;把一个窗体变成没有标题栏的窗体比较简单，只要一行代码：&lt;/p&gt;&lt;pre class=&quot;brush:python;toolbar:false&quot;&gt;root.overrideredirect(True)&amp;nbsp;&amp;nbsp;#&amp;nbsp;无标题栏窗体&lt;/pre&gt;&lt;p&gt;移动窗体需要绑定事件，绑定２个事件：鼠标点击MouseDown事件，按住拖动MouseMove事件，分别得到相应的坐标位置，把根据计算出的坐标位置，把窗体移动相应的新位置。&lt;/p&gt;&lt;p&gt;调节窗体大小，由于边框也没有了，不可能通过边框来调节窗体尺寸，只要新建一个组件，比如标签来根据绑定的鼠标拖动size事件来得到相应坐标，再根据计算出来的坐标，把窗体的尺寸调节到相应的大小。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;以下是全部代码。&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 冫亓垚&lt;/p&gt;&lt;pre class=&quot;brush:python;toolbar:false&quot;&gt;from&amp;nbsp;tkinter&amp;nbsp;import&amp;nbsp;*
&amp;nbsp;
def&amp;nbsp;MouseDown(event):&amp;nbsp;#&amp;nbsp;不要忘记写参数event
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;global&amp;nbsp;mousX&amp;nbsp;&amp;nbsp;#&amp;nbsp;全局变量，鼠标在窗体内的x坐标
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;global&amp;nbsp;mousY&amp;nbsp;&amp;nbsp;#&amp;nbsp;全局变量，鼠标在窗体内的y坐标
&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mousX=event.x&amp;nbsp;&amp;nbsp;#&amp;nbsp;获取鼠标相对于窗体左上角的X坐标
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mousY=event.y&amp;nbsp;&amp;nbsp;#&amp;nbsp;获取鼠标相对于窗左上角体的Y坐标
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
def&amp;nbsp;MouseMove(event):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w1=la1.winfo_x()&amp;nbsp;#&amp;nbsp;w1为标签1的左边距
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;h1=la1.winfo_y()&amp;nbsp;#&amp;nbsp;h1为标签1的上边距
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;root.geometry(f&amp;#39;+{event.x_root&amp;nbsp;-&amp;nbsp;mousX-w1}+{event.y_root&amp;nbsp;-&amp;nbsp;mousY-h1}&amp;#39;)&amp;nbsp;#&amp;nbsp;窗体移动代码

def&amp;nbsp;exit(event):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;root.destroy()&amp;nbsp;#&amp;nbsp;退出程序
&amp;nbsp;
root=Tk()&amp;nbsp;#&amp;nbsp;源码来自aying7.com
root.geometry(&amp;#39;280x140+780+400&amp;#39;)
root.overrideredirect(True)&amp;nbsp;&amp;nbsp;#&amp;nbsp;无标题栏窗体

la1=Label(root,text=&amp;#39;按着拖动，移动窗体\n鼠标双击退出程序&amp;#39;,height=3,bg=&amp;#39;lightgreen&amp;#39;,cursor=&amp;#39;fleur&amp;#39;)
la1.pack(padx=15,pady=30)
&amp;nbsp;
la1.bind(&amp;quot;&amp;lt;Button-1&amp;gt;&amp;quot;,MouseDown)&amp;nbsp;&amp;nbsp;#&amp;nbsp;按下鼠标左键绑定MouseDown函数
la1.bind(&amp;quot;&amp;lt;B1-Motion&amp;gt;&amp;quot;,MouseMove)&amp;nbsp;&amp;nbsp;#&amp;nbsp;鼠标左键按住拖曳事件
la1.bind(&amp;quot;&amp;lt;Double-Button-1&amp;gt;&amp;quot;,exit)&amp;nbsp;&amp;nbsp;#&amp;nbsp;双击鼠标左键，退出程序

def&amp;nbsp;size(event):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x1&amp;nbsp;=&amp;nbsp;root.winfo_pointerx()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y1&amp;nbsp;=&amp;nbsp;root.winfo_pointery()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x0&amp;nbsp;=&amp;nbsp;root.winfo_rootx()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y0&amp;nbsp;=&amp;nbsp;root.winfo_rooty()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;root.geometry(&amp;quot;%sx%s&amp;quot;&amp;nbsp;%&amp;nbsp;((x1-x0),(y1-y0)))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return

la2=Label(root,text=&amp;#39;按住拖动调节窗体大小&amp;#39;,bg=&amp;#39;lightblue&amp;#39;)&amp;nbsp;#&amp;nbsp;标签2用来调节窗体尺寸
la2.pack(side=BOTTOM,anchor=E)
la2.bind(&amp;quot;&amp;lt;B1-Motion&amp;gt;&amp;quot;,&amp;nbsp;size)

root.mainloop()&lt;/pre&gt;&lt;p&gt;运行图&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://aying7.com/zb_users/upload/2021/11/202111181311012313168.png&quot; alt=&quot;1.PNG&quot; title=&quot;1.PNG&quot;/&gt;&lt;/p&gt;&lt;p&gt;以上代码由 &lt;a href=&quot;http://www.aying7.com&quot; target=&quot;_self&quot;&gt;aying7.com&lt;/a&gt;&amp;nbsp;测试成功&lt;/p&gt;</description><pubDate>Thu, 18 Nov 2021 09:26:29 +0800</pubDate></item><item><title>tkinter.ttk模块下的OptionMenu组件，第一选项永远消失的解决办法</title><link>http://aying7.com/post/3.html</link><description>&lt;p&gt;&amp;nbsp; &amp;nbsp; 有朋友发现，在tkinter模块下，创建的&lt;span style=&quot;color: #555555; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: #FFFFFF;&quot;&gt;OptionMenu组件一切成功，但改为ttk模块下，当点击其它选项后，第一个选项就消失了，再也不会出现了。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #555555; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: #FFFFFF;&quot;&gt;&amp;nbsp; &amp;nbsp; 在ttk模块下的代码是:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #555555; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; background-color: #FFFFFF;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;brush:python;toolbar:false&quot;&gt;from&amp;nbsp;tkinter&amp;nbsp;import&amp;nbsp;*

root=Tk()
var=StringVar()
tuple_op=(&amp;#39;第1单车&amp;#39;,&amp;#39;第2汽车&amp;#39;,&amp;#39;第3火车&amp;#39;)
op1=OptionMenu(root,var,*tuple_op)
op1.pack()

root.mainloop()&lt;/pre&gt;&lt;p&gt;运行一切正常！&amp;nbsp; &amp;nbsp; &amp;nbsp; 冫亓垚&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;再导入ttk模块,&amp;nbsp;启动时还正常，但点击除第1项的选项后，第1选项就消失了。代码如下&lt;/p&gt;&lt;pre class=&quot;brush:python;toolbar:false&quot;&gt;from&amp;nbsp;tkinter&amp;nbsp;import&amp;nbsp;*
from&amp;nbsp;tkinter.ttk&amp;nbsp;import&amp;nbsp;*

root=Tk()
var=StringVar()
tuple_op=(&amp;#39;第1单车&amp;#39;,&amp;#39;第2汽车&amp;#39;,&amp;#39;第3火车&amp;#39;)
op1=OptionMenu(root,var,*tuple_op)
op1.pack()

root.mainloop()&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;分析出问题的原因：&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; 在ttk模块下，创建OptionMenu组件语法已经变了,但有不少朋友并没有发现，ttk下的语法是：&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 18px; white-space: pre; background-color: #1E1E1E; color: #4EC9B0;&quot;&gt;OptionMenu&lt;/span&gt;&lt;span style=&quot;color: #D4D4D4; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 18px; white-space: pre; background-color: #1E1E1E;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 18px; white-space: pre; background-color: #1E1E1E;&quot;&gt;&lt;span style=&quot;color:#9cdcfe&quot;&gt;父组件&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #D4D4D4; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 18px; white-space: pre; background-color: #1E1E1E;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 18px; white-space: pre; background-color: #1E1E1E;&quot;&gt;&lt;span style=&quot;color:#9cdcfe&quot;&gt;绑定的变量&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #D4D4D4; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 18px; white-space: pre; background-color: #1E1E1E;&quot;&gt;，启动时默认的选项，选项列表&lt;/span&gt;&lt;span style=&quot;color: #D4D4D4; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 18px; white-space: pre; background-color: #1E1E1E;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;其中第3个参数：“启动时默认的选项”就是新增的参数。在tkinter模块的，不用写这个参数，默认是第1项作为启动时默认选择项。&lt;/p&gt;&lt;p&gt;所以，上面的代码改成下面的代码，就不会出问题了。（就是改一下创建组件代码就行了）&lt;/p&gt;&lt;pre class=&quot;brush:python;toolbar:false&quot;&gt;from&amp;nbsp;tkinter&amp;nbsp;import&amp;nbsp;*
from&amp;nbsp;tkinter.ttk&amp;nbsp;import&amp;nbsp;*

root=Tk()
root.title(&amp;#39;aying7.com&amp;#39;)

var=StringVar()
tuple_op=(&amp;#39;第1单车&amp;#39;,&amp;#39;第2汽车&amp;#39;,&amp;#39;第3火车&amp;#39;)
op1&amp;nbsp;=&amp;nbsp;OptionMenu(root,var,tuple_op[0],*tuple_op)
op1.pack()

root.mainloop()&lt;/pre&gt;&lt;p&gt;运行图：&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://aying7.com/zb_users/upload/2021/11/202111181126115225255.png&quot; alt=&quot;202111181126115225255.png&quot; title=&quot;202111181126115225255.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;经 &lt;a href=&quot;http://www.aying7.com&quot; target=&quot;_self&quot;&gt;aying7.com&lt;/a&gt;&amp;nbsp;测试成功。&lt;/p&gt;</description><pubDate>Tue, 02 Nov 2021 08:26:54 +0800</pubDate></item><item><title>tkinter自定义颜色的进度条Progressbar</title><link>http://aying7.com/post/1.html</link><description>&lt;p style=&quot;text-indent:32px&quot;&gt;&lt;span style=&quot;font-size: 16px; font-family: 微软雅黑, &amp;quot;Microsoft YaHei&amp;quot;;&quot;&gt;有朋友需要自定义颜色的进度条Progressb&lt;span style=&quot;font-size: 16px; font-family: 微软雅黑, &amp;quot;Microsoft YaHei&amp;quot;;&quot;&gt;a&lt;/span&gt;r,但在默认情况下,是不可能做出来的,必须要通过Style样式来设置，因为进度条是ttk模块下的组件，所以要通过设置主题来改变进度条的颜色。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px; color: #333333; font-family: 微软雅黑, &amp;quot;Microsoft YaHei&amp;quot;;&quot;&gt;以下是代码:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;冫亓垚&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;brush:python;toolbar:false&quot;&gt;from&amp;nbsp;tkinter&amp;nbsp;import&amp;nbsp;*
from&amp;nbsp;tkinter.ttk&amp;nbsp;import&amp;nbsp;*

root=Tk()
root.title(&amp;#39;aying7.com&amp;#39;)

style&amp;nbsp;=&amp;nbsp;Style()
style.theme_use(&amp;#39;clam&amp;#39;)&amp;nbsp;
#&amp;nbsp;各主题自行测试,&amp;#39;winnative&amp;#39;,&amp;#39;clam&amp;#39;,&amp;#39;alt&amp;#39;,&amp;#39;default&amp;#39;,&amp;#39;classic&amp;#39;测试成功.&amp;nbsp;
#&amp;nbsp;windes主题：(&amp;#39;winnative&amp;#39;,&amp;#39;clam&amp;#39;,&amp;#39;alt&amp;#39;,&amp;#39;default&amp;#39;,&amp;#39;classic&amp;#39;,&amp;#39;vista&amp;#39;,&amp;#39;xpnative&amp;#39;)

style.configure(&amp;quot;1.Horizontal.TProgressbar&amp;quot;,&amp;nbsp;troughcolor&amp;nbsp;=&amp;#39;blue&amp;#39;,&amp;nbsp;background=&amp;#39;green&amp;#39;)&amp;nbsp;
style.configure(&amp;quot;2.Horizontal.TProgressbar&amp;quot;,&amp;nbsp;troughcolor&amp;nbsp;=&amp;#39;red&amp;#39;,&amp;nbsp;background=&amp;#39;yellow&amp;#39;)
style.configure(&amp;quot;3.Horizontal.TProgressbar&amp;quot;,&amp;nbsp;troughcolor&amp;nbsp;=&amp;#39;black&amp;#39;,&amp;nbsp;background=&amp;#39;red&amp;#39;)
style.configure(&amp;quot;4.Horizontal.TProgressbar&amp;quot;,&amp;nbsp;troughcolor&amp;nbsp;=&amp;#39;white&amp;#39;,&amp;nbsp;background=&amp;#39;lightblue&amp;#39;)

P1&amp;nbsp;=&amp;nbsp;Progressbar(root,style=&amp;quot;1.Horizontal.TProgressbar&amp;quot;,length=180)
P1.pack(padx=10,pady=5)
P1.start()

P2&amp;nbsp;=&amp;nbsp;Progressbar(root,style=&amp;quot;2.Horizontal.TProgressbar&amp;quot;,length=180)
P2.pack(padx=10,pady=5)
P2.start()

P3&amp;nbsp;=&amp;nbsp;Progressbar(root,style=&amp;quot;3.Horizontal.TProgressbar&amp;quot;,length=180)
P3.pack(padx=10,pady=5)
P3.start()

P4&amp;nbsp;=&amp;nbsp;Progressbar(root,style=&amp;quot;4.Horizontal.TProgressbar&amp;quot;,length=180)
P4.pack(padx=10,pady=5)
P4.start()

root.mainloop()&amp;nbsp;#&amp;nbsp;来自&amp;nbsp;aying7.com&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: 宋体;&quot;&gt;运行图&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size:16px;font-family:Consolas;color:#333333&quot;&gt;&lt;img src=&quot;http://aying7.com/zb_users/upload/2021/11/202111181049135634871.png&quot; alt=&quot;1.PNG&quot; title=&quot;1.PNG&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size:16px;font-family:Consolas;color:#333333&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-indent:32px&quot;&gt;&lt;span style=&quot;font-size:16px;font-family:宋体;color:#333333&quot;&gt;经过&amp;nbsp;&lt;a href=&quot;http://www.aying7.com&quot; target=&quot;_self&quot;&gt;aying7.com&lt;/a&gt; 测试，有些主题支持进度度颜色自定义，有些不支持&lt;/span&gt;&lt;span style=&quot;font-size:16px;font-family:宋体;color:#333333&quot;&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Fri, 29 Oct 2021 00:02:18 +0800</pubDate></item></channel></rss>