嗨,大家好我想显示使用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线。如何正确格式化几何数据?
dsw = sw / 2
到dsw = str(int(sw / 2))
使得需要的(SW / 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()
该.geometry()
方法采用一个字符串“宽度x高度”
行label.master.geometry("+dsw+dsh")
更改为这一点,它应该工作:
label.master.geometry(str(dsw) + 'x' + str(dsh))
我不知道,虽然它会做你想要做的事。为了把你想上哪儿给你应该用你的变量DSW和DSH设置正确填充的包()方法屏幕上的文字。几何是用来改变的Tkinter窗口的大小。了解更多关于这个在这里:http://effbot.org/tkinterbook/wm.htm