伙计们,我试图使用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行上。如何正确设置几何数据的格式?
答案 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)
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()