Установка положения этикетки Tkinter на экране с использованием геометрического метода - PullRequest
0 голосов
/ 05 февраля 2019

Эй, ребята, я пытаюсь отобразить текст на экране, используя 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 голосов
/ 05 февраля 2019
  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()
0 голосов
/ 05 февраля 2019

Метод .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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...