如何在 tkinter python 中的 TopLevel window 上放置一个按钮?
How to place a button on the TopLevel window in tkinter python?
为像我这样的其他无辜新手指出的答案
在 python2,我们有 Tkinter
在 python3 中,我们有 tkinter。
注意大小写的不同。这就是错误出现的原因。
我有两个屏幕:window(子)和根(主)
我正在尝试在方法创建的 "window" 屏幕上放置一个按钮: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()
但是这个button2没有出现在第二个屏幕上。同时,标签出现在这个屏幕上。控件将进入 writeText() 函数。
当我从 window 屏幕的按钮中删除命令参数时,该按钮出现。
谁能帮我解决这个问题?
这是我的建议。
根据您的问题,您输入了 from tkinter import *
,但是您在标签中输入了 Python 2.7
。这是矛盾的,因为 tkinter
(全部小写)用于 Python 3.x 而 Tkinter
应该用于 python 2.x。那就是说先尝试修复你的导入。如果您实际上正在使用 Python 3 那么您将需要更正您的打印语句以包含括号。 print("hello")
2nd 我会尝试更密切地关注 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 上使用下面的代码(提示 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)
为像我这样的其他无辜新手指出的答案 在 python2,我们有 Tkinter 在 python3 中,我们有 tkinter。
注意大小写的不同。这就是错误出现的原因。
我有两个屏幕:window(子)和根(主) 我正在尝试在方法创建的 "window" 屏幕上放置一个按钮: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()
但是这个button2没有出现在第二个屏幕上。同时,标签出现在这个屏幕上。控件将进入 writeText() 函数。
当我从 window 屏幕的按钮中删除命令参数时,该按钮出现。
谁能帮我解决这个问题?
这是我的建议。
根据您的问题,您输入了 from tkinter import *
,但是您在标签中输入了 Python 2.7
。这是矛盾的,因为 tkinter
(全部小写)用于 Python 3.x 而 Tkinter
应该用于 python 2.x。那就是说先尝试修复你的导入。如果您实际上正在使用 Python 3 那么您将需要更正您的打印语句以包含括号。 print("hello")
2nd 我会尝试更密切地关注 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 上使用下面的代码(提示 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)