#python #user-interface #tkinter
Вопрос:
Я только начал работать над python и пытался создать небольшой пользовательский интерфейс. У меня есть несколько похожих окон с кнопкой на нем и функцией обратного вызова, связанной с кнопкой. Есть ли способ узнать, из какого окна была нажата кнопка. Мне нужно знать, из какого окна было нажато «Создать сообщение». аргументом x будет номер окна, из которого нажата кнопка
for x in range(num):
Label(newWindow, text="Enter TTL").grid(row=1, column=0)
TTL = Entry(newWindow, width=10, borderwidth=5)
TTL.grid(row=1, column=1)
#ttl = int(TTL.get())
Label(newWindow, text="Enter Direction").grid(row=2, column=0)
direction = Ent`enter code here`ry(newWindow, width=10, borderwidth=5)
direction.grid(row=2, column=1)
#dir = int(direction.get())
Button(newWindow, text="Create Message",
command=lambda: threading.Thread(target=create_message, args=(TTL, direction,x,)).start()).grid(row=4,
column=0)
Комментарии:
1. Это одна из причин, почему Tkinter-такое дерьмо. Вы МОЖЕТЕ сделать это, записав переменные в лямбду при назначении обратного вызова, но это некрасиво. Если вы действительно заинтересованы в создании графических интерфейсов Python, пожалуйста, найдите время, чтобы изучить один из реальных фреймворков, таких как Qt/PySide или wxPython.
2. Спасибо за ответ, Тим, я только начал работать над Python, позже я попытаюсь изучить другие варианты.
3. Нам будет легче помочь вам, если вы опубликуете минимальный пример.
4. Вы можете сделать два отдельных окна, как это —
window1 = Tk()
иwindow2 = Tk()
. Чтобы вы знали, в каком окне была нажата кнопка. Но наличие нескольких экземпляровTk()
-это проблема5. Ваш код не создает несколько окон. Он создает виджеты только внутри одного окна
newWindow
. Также исправьте отступы в вашем коде.