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

问题描述 投票:0回答:2

嗨,大家好我想显示使用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线。如何正确格式化几何数据?

python tkinter
2个回答
1
投票
  1. 改变dsw = sw / 2dsw = 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()

1
投票

.geometry()方法采用一个字符串“宽度x高度”

label.master.geometry("+dsw+dsh")更改为这一点,它应该工作:

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

我不知道,虽然它会做你想要做的事。为了把你想上哪儿给你应该用你的变量DSW和DSH设置正确填充的包()方法屏幕上的文字。几何是用来改变的Tkinter窗口的大小。了解更多关于这个在这里:http://effbot.org/tkinterbook/wm.htm

© www.soinside.com 2019 - 2024. All rights reserved.