wbdzt

  这篇文章,我来讲讲在tkinter编程中,如何为窗体的属性赋值,以及获取窗体属性值的方法。

了解窗体有什么属性

  窗体有属性可以设置,我们可以用 keys() 方法来查看一下。

  以下代码中 print(root.keys())  功能就是在终端输出窗体root可以设置的属性。完整代码如下:

1 from tkinter import *
2 root=Tk()
3 print(root.keys())   # 输出窗体的属性
4 root.mainloop()

  在我的电脑里(windows 10 系统)输出结果如下:

[\'bd\', \'borderwidth\', \'class\', \'menu\', \'relief\', \'screen\', \'use\', \'background\', \'bg\', \'colormap\', \'container\', \'cursor\', \'height\', \'highlightbackground\', \'highlightcolor\', \'highlightthickness\', \'padx\', \'pady\', \'takefocus\', \'visual\', \'width\']

  看上去窗体有很多属性,但是,我们平时常用的属性值就那么几个,其它不太常用的属性设置,我们可以暂时不用管它们。

用config()方法设置窗体属性 

  为窗体属性以及组件(控件)属性设置的方法有2种。第1种方法是用config()  或 configure()  

1 root.config(bg=\'yellow\',cursor=\'hand2\',width=200,height=100) 
2 root.configure(bg=\'yellow\',cursor=\'hand2\',width=200,height=100)
  以上两句代码,作用是一样的,(以后就我就采用config()方法)上面代码作用就是让窗口背景设置为黄色,窗口范围内的鼠标形态变成手形,宽度为200,高度为100。

全部代码,如下:

1 from tkinter import *
2 root=Tk()
3 root.config(bg=\'yellow\',cursor=\'hand2\',width=200,height=100) 
4 root.mainloop()
我们来运行一下看看结果:

 

用config()方法,可以一次为1个或多个属性进行设置。

通过字典键设置窗体属性

  这种方法只可为一个属性单独设置。如:

1 root[\'bg\']=\'yellow\'
2 root[\'cursor\']=\'hand2\'
3 root[\'width\']=200
4 root[\'height\']=100

 

    这种方法,如果为一个不存在的属性设置,就会被 系统报TclError 错误。

获取窗体属性之方法1

  将上面讲解的用字典键来设置窗体方法改一下,去=号,不赋值,就可以得到属性值。如:

root[\'height\']    # 获取窗体高度
root[\'bg\']      # 获取窗体背景颜色
root[\'cursor\']   # 获取窗体的鼠标样式

  我们可以把获取的属性性赋值给别的变量,或者直接打印出来。

1 from tkinter import *
2 root=Tk()
3 root[\'height\']=300
4 root[\'bg\']=\'red\'
5 root[\'cursor\']=\'hand2\'
6 print(root[\'height\'])
7 print(root[\'bg\'])
8 print(root[\'cursor\'])
9 root.mainloop()

 

  上面代码中,我们可以用print把窗体的属性值打印出来。

注意,如果窗体没有设定属性值,用这种方法,无法得到正确的值。我们把3,4,5句代码去除,再运行一下,就会发现输出结果提示错误。

 

获取窗体属性值之方法2

  第2种方法,是用cget() 方法来获取窗体属性值 。如:

root.cget(\'height\')
root.cget(\'bg\')
root.cget(\'cursor\')

  同样,我们也可以把获取的属性性赋值给别的变量,或者直接打印出来。

1 from tkinter import *
2 root=Tk()
3 root.config(height=100,bg=\'red\',cursor=\'hand2\')
4 print(root.cget(\'height\'))
5 print(root.cget(\'bg\'))
6 print(root.cget(\'cursor\'))
7 root.mainloop()

 

  上面代码中,我们可以用print把窗体的属性值打印出来。

  注意,这种方法跟第1种方法一样,如果窗体没有设定属性值,就无法得到正确的属性值。我们把第3句代码去除,再运行一下,就会发现,输出结果提示错误。

  总结:上述的2种设置属性方法和2种设置属性方法对于后面要讲解的组件(在其它的编程语言里,组件也叫控件),也一样管用。

 

其它方法获取窗体的宽和高

root.winfo_width()  # 获取窗体的宽

root.winfo_height()  # 获取窗体的高

 

我们用下面的代码输出窗体宽和高

1 from tkinter import *
2 root=Tk()
3 root.geometry(\'300x150+888+444\') # 设置窗体大小和位置
4 root.update()  # 刷新窗体
5 print(root.winfo_width())  # 输出窗体宽
6 print(root.winfo_height()) # 输出窗体高
7 root.mainloop()

 

  注意第4行代码,这是刷新窗体语句,缺少这句,输出的结果不正确,一定要加上这行代码才行。

  去除第3行设置窗体大小的代码,一样可以得到窗体的宽和高。圐丿丌

 

其它方法获取窗体的位置

root.winfo_x()  # 获取窗体左边距

root.winfo_y()  # 获取窗体上边距

用下面的代码输出窗体的位置:

1 from tkinter import *
2 root=Tk()
3 root.geometry(\'300x150+888+444\') # 设置窗体大小和位置
4 root.update()  # 刷新窗体
5 print(root.winfo_x())  # 输出窗体左边距
6 print(root.winfo_y()) # 输出窗体上边距
7 root.mainloop()

 

tkinter窗体居中显示的代码

  上一篇文章,简单讲解了窗体的在屏幕位置的设置,这里,稍详细一下。设置窗体位置的代码如:

root.geometry(\'±100±200\') 

第1个参数为:+数值,表示窗口左边离屏幕左边的距离

                 -数值,表示窗口右边离屏幕右边的距离

第2个参数为:+数值,表示窗口上边离屏幕上边的距离

                -数值,表示窗口下边离屏幕下边的距离

大家自行把上面代码的第三行代码改成下面的其中一条代码,查看窗体在屏幕的不同位置。

root.geometry(\'+100+200\')  # 窗体在屏幕左上角
root.geometry(\'-100-200\')  # 窗体在屏幕右下角
root.geometry(\'+100-200\')  # 窗体在屏幕左下角
root.geometry(\'-100+200\')  # 窗体在屏幕右上角

  但在实际的程序编写中,让窗体居中显示可能更有实用性。代码如下:

1 a,b=300,150       # a为窗体宽度,b为窗体的高度
2 c=(root.winfo_screenwidth()-a)/2    # (屏幕宽度-窗体宽度)/2
3 d=(root.winfo_screenheight()-b)/2   # (屏幕高度-窗体高度)/2
4 root.geometry(\'%dx%d+%d+%d\' % (a,b,c,d)) # c为窗口左边离屏幕左边的距离,d为窗口上边离屏幕上边的距离

  以上tkinter窗口居中显示代码你可以收藏起来,使用时,只要改一下a,b的数值设置就可以行了。

解释:

  root.geometry(\'%dx%d+%d+%d\' % (a,b,c,d)) 这一代码需要你懂得python的字符串格式化知识,这里是使用%操作符来格式化字符串。

  root.winfo_screenwidth() 为获取屏幕的宽度,括号不能省

  root.winfo_screenheight()  为获取屏幕的高度,括号不能省。

   此文章来自:济亨网,网址:www.wb98.com  网站还有相关的系列课程文章,感兴趣的的可以前往。

  下一篇文章,讲解tkinter的组件(组件英文为: widget),先讲“标签”组件。

分类:

技术点:

相关文章: