首页 > 其他分享 >第1-2讲,tkinter设置窗体属性及获取属性

第1-2讲,tkinter设置窗体属性及获取属性

时间:2023-04-28 12:00:48浏览次数:32  
标签:bg tkinter height window 窗体 print 属性

了解窗体有什么属性

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

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

import  tkinter as tk

#创建一个窗口
window=tk.Tk()

#输出窗口的属性
print(window.keys())#显示窗口
window.mainloop()

输出结果:

['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()  

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

#创建一个窗口
window=tk.Tk()

#输出窗口的属性
print(window.keys())
window.config(bg='yellow',cursor='hand2',width=200,height=100)
window.configure(bg='yellow',cursor='hand2',width=200,height=100)

#显示窗口
window.mainloop()

显示效果如下:

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

通过字典键设置窗体属性

通过字典设置窗体属性,只可为一个属性单独设置。如:

window['bg']='yellow'
window['cursor']='hand2'
window['width']=200
window['height']=100

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

获取窗体属性之方法1

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

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

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

import  tkinter as tk

#创建一个窗口
window=tk.Tk()

#输出窗口的属性
print(window.keys())
#window.config(bg='yellow',cursor='hand2',width=200,height=100)
#window.configure(bg='yellow',cursor='hand2',width=200,height=100)
window['height']=300
window['bg']='red'
window['cursor']='hand2'
print(window['height'])
print(window['bg'])
print(window['cursor'])
#显示窗口
window.mainloop()

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

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

获取窗体属性值之方法2

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

window.cget('height')
window.cget('bg')
window.cget('cursor')

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

import  tkinter as tk

#创建一个窗口
window=tk.Tk()

#输出窗口的属性
print(window.keys())
#window.config(bg='yellow',cursor='hand2',width=200,height=100)
#window.configure(bg='yellow',cursor='hand2',width=200,height=100)
window['height']=300
window['bg']='red'
window['cursor']='hand2'
#print(window['height'])
#print(window['bg'])
#print(window['cursor'])
print(window.cget('height'))
print(window.cget('bg'))
print(window.cget('cursor'))

#显示窗口
window.mainloop()

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

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

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

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

window.winfo_width()  # 获取窗体的宽
 
window.winfo_height()  # 获取窗体的高

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

from tkinter import *
window=Tk()
window.geometry('300x150+888+444') # 设置窗体大小和位置
window.update()  # 刷新窗体
print(window.winfo_width())  # 输出窗体宽
print(window.winfo_height()) # 输出窗体高
window.mainloop()

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

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

其它方法获取窗体的位置

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

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

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

from tkinter import *
window=Tk()
window.geometry('300x150+888+444') # 设置窗体大小和位置
window.update()  # 刷新窗体
print(window.winfo_x())  # 输出窗体左边距
print(window.winfo_y()) # 输出窗体上边距
window.mainloop()

tkinter窗体居中显示的代码

设置窗体位置的代码如:

root.geometry('±100±200')

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

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

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

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

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

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

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

a,b=300,150       # a为窗体宽度,b为窗体的高度
c=(window.winfo_screenwidth()-a)/2    # (屏幕宽度-窗体宽度)/2
d=(window.winfo_screenheight()-b)/2   # (屏幕高度-窗体高度)/2
window.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() # 为获取屏幕的高度,括号不能省。

标签:bg,tkinter,height,window,窗体,print,属性
From: https://www.cnblogs.com/joyware/p/17361731.html

相关文章

  • java jar 没有主清单属性_Spring Boot jar中没有主清单属性的解决方法「建议收藏」
    javajar没有主清单属性_SpringBootjar中没有主清单属性的解决方法「建议收藏」原文链接:https://cloud.tencent.com/developer/article/2133065大家好,又见面了,我是你们的朋友全栈君。使用SpringBoot微服务搭建框架,在eclipse和Idea下能正常运行,但是在打成jar包部署或者直接......
  • SVG 教程 (五)文本,Stroke 属性,SVG 滤镜,SVG 模糊效果
    SVGSVG文本-<text>元素用于定义文本。实例1写一个文本:下面是SVG代码:<svgxmlns="http://www.w3.org/2000/svg"version="1.1"><textx="0"y="15"fill="red">IloveSVG</text></svg>  对于Opera用户:......
  • html表格相关属性
    <!DOCTYPEhtml><html>   <head>      <metacharset="UTF-8">      <title>表头标签</title>   </head>   <body>      <tablealign="center"border="1"cellpadding="0"......
  • HTML中script 标签中的那些属性
    在HTML中,<script>标签用于嵌入或引用JavaScript代码。在<script>标签中,有两个属性可以用来控制脚本的加载和执行方式:async和defer。当然这也是常见的一道面试题,async 和 defer的作用和区别。async和defer属性都可以用于异步加载脚本,从而避免了在加......
  • Unity获取Material的属性名小坑
    最近在学习UntiyShader的使用,在获取UnityMaterial的属性名时遇到了一个小坑。如图我现在实现了一个云的效果的ShaderShader的属性名如下图红框所示: 当我们想用代码尝试获取属性名并修改时,问题出现了: 报错: 解决:查看shadergraph发现了问题,属性名原来与Shader中的......
  • Delphi 抓图后打印这张图片,弹出打印属性框
    如果用窗体.print打印的话,会导致一些控件打印不出来,比如下拉列表,还有打印TChart也会导致只打印TChart的原始状态,而不会打印有数据的TChart所以我就想到了先抓图,后打印抓图后下拉列表和TChart都正常显示了,可是还有一点不好,就是下拉列表中的值是显示......
  • js javascript js隐藏页面上有id的控件,隐藏页面上无控件包含的文字,控制页面控件属性
    1.隐藏页面上有id的控件varinput=document.getElementsByTagName("input");//获取页面所有inputfor(vari=0;i<input.length;i++){if(input.item(i).id.indexOf("txt")>=0)//判断input的id中是否包含txt字符串{......
  • C#高性能动态获取对象属性值的步骤
    动态获取对象的性能值,这个在开发过程中经常会遇到,这里我们探讨一下何如高性能的获取属性值。为了对比测试,我们定义一个类PeoplepublicclassPeople{publicstringName{get;set;}}然后通过直接代码调用方式来取1千万次看要花多少时间:privatestaticvoidDirectly......
  • 子线程启动tkinter并完美退出
    importsysfromtkinterimport*fromPILimportImage,ImageTkfromthreadingimportThreaddefui():myPic=Nonedefopenimg():globalmyPicimg=Image.open("img.png")myPic=ImageTk.PhotoImage(img)......
  • 在线设计Tkinter界面,生成Python代码,Tkinter布局助手,拖拽生成界面,tkinter designer,可视
    设计地址:https://www.pytk.net/tkinter-helper/? 运行演示  教程地址:https://www.pytk.net/tkinter.html 常用演示"""本代码由[Tkinter布局助手]生成当前版本:3.2.4官网:https://www.pytk.net/tkinter-helperQQ交流群:788392508"""fromtkinterimportmessag......