Как разместить кнопку в окне TopLevel в tkinter python?
У меня есть два экрана: окно (дочерний) и root(мастер). Я пытаюсь разместить кнопку на "оконном" экране, созданном методом: command(). Я написал этот кусок кода.
from tkinter import *
root = Tk()
def writeText():
print "hello"
def command():
window=Toplevel(root)
Button(window,text="Button2",command=writeText).grid()
Label(window,text="hello").grid()
button = Button(root, text="New Window", command=command)
button.grid()
root.mainloop()
Но эта кнопка2 не появляется на втором экране. Тем временем на этом экране появляется ярлык. И элемент управления переходит в функцию writeText().
И когда я удаляю аргумент команды из экрана кнопки окна, кнопка появляется.
Может кто-нибудь, пожалуйста, помогите мне с этим?
1 ответ
Вот мое предложение.
С вашего вопроса вы поставили from tkinter import *
Однако в ваших тегах вы положили Python 2.7
, Это противоречиво, потому что tkinter
(все строчные буквы) используется в Python 3.x и Tkinter
вместо этого следует использовать для Python 2.x. Тем не менее попробуйте исправить ваш импорт в первую очередь. Если вы на самом деле используете Python 3, вам нужно будет исправить оператор печати, включив в него скобки. print("hello")
Во-вторых, я бы попытался более точно следовать PEP8, однако в этом случае я не вижу ничего необычного, что могло бы вызвать эту проблему.
Возьмите мой пример ниже и дайте мне знать, если у вас все еще есть та же проблема.
Пример Python 2.x:
import Tkinter as tk # Upper case T in Tkinter for Python 2.x
root = tk.Tk()
def write_text():
print "hello"
def command():
window = tk.Toplevel(root)
tk.Button(window,text="Button2",command=write_text).grid()
tk.Label(window,text="hello").grid()
button = tk.Button(root, text="New Window", command=command)
button.grid()
root.mainloop()
Пример Python 3.x:
import tkinter as tk # all lowercase tkinter for Python 3.x
root = tk.Tk()
def write_text():
print("hello") # Python 3.x requires brackets for print statements.
def command():
window = tk.Toplevel(root)
tk.Button(window,text="Button2",command=write_text).grid()
tk.Label(window,text="hello").grid()
button = tk.Button(root, text="New Window", command=command)
button.grid()
root.mainloop()
Если у вас все еще есть проблемы, можете ли вы сказать мне, если вы используете Windows, Linux или Mac?
Ребята, вы когда-нибудь пробовали кнопку с изображением на Toplevel? Кажется, это не может быть работать с кодом ниже на Toplevel(Prompt Out Windows). Уровень корня в порядке.
tp = Toplevel()
tp.geometry("400x400")
btnphotoAdd=PhotoImage(file="32adduser.png")
btnAdd = Button(tp, text="Add User", font="Helvetica 20 bold", image=btnphotoAdd,compound=TOP)
btnAdd.grid(row=10, column=0, sticky=W)