使用几何方法在屏幕上设置Tkinter标签位置

时间:2019-02-05 06:40:46

标签: python tkinter

伙计们,我试图使用tkinter在屏幕上显示文本,并使用变量指定其位置,但是我一直收到此错误:

_tkinter.TclError: bad geometry specifier. 

代码如下:

from tkinter import*  
root = Tk()

sw = root.winfo_screenwidth()
sh = root.winfo_screenheight()
dsw = sw / 2
dsh = sh / 2
print(dsw)
print(dsh)

label = Label(text='text', font=('Arial','30'), fg='black', bg='white')
label.master.overrideredirect(True)
label.master.geometry("+dsw+dsh")
label.master.lift()
label.master.wm_attributes("-topmost", True)
label.master.wm_attributes("-disabled", True)
label.master.wm_attributes("-transparentcolor", "white")
label.pack()

label.mainloop()

问题似乎出在label.master.geometry行上。如何正确设置几何数据的格式?

2 个答案:

答案 0 :(得分:1)

.geometry()方法采用字符串'widthxheight'

将行label.master.geometry("+dsw+dsh")更改为此,它应该起作用:

label.master.geometry(str(dsw) + 'x' + str(dsh))

我不确定它是否会执行您想要的操作。要将文本放在屏幕上所需的位置,应使用变量dsw和dsh为pack()方法设置正确的填充。几何用于更改tkinter窗口的大小。在此处详细了解:http://effbot.org/tkinterbook/wm.htm

答案 1 :(得分:1)

  1. dsw = sw / 2更改为dsw = str(int(sw / 2)),以便采用整数值的字符串表示形式,(sw / 2)
  2. geometry("+dsw+dsh")更改为geometry("+" + dsw + "+" + dsh)。因为("+dsw+dsh")代表(“ + dsw + dsh”),而("+" + dsw + "+" + dsh)代表这样的东西:(+ 683 + 384)

下面是更新的代码:

from tkinter import*
root = Tk()

sw = root.winfo_screenwidth()
sh = root.winfo_screenheight()
dsw = str(int(sw / 2))
dsh = str(int(sh / 2))
print(dsw)
print(dsh)

label = Label(text='text', font=('Arial','30'), fg='black', bg='white')
label.master.overrideredirect(True)
label.master.geometry("+"+dsw+"+"+dsh)
label.master.lift()
label.master.wm_attributes("-topmost", True)
label.master.wm_attributes("-disabled", True)
label.master.wm_attributes("-transparentcolor", "white")
label.pack()

label.mainloop()