如何在tkinter python的TopLevel窗口上放置一个按钮?

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

我有两个屏幕:window(child)和root(master)我试图在方法创建的“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()

但是这个按钮2没有出现在第二个屏幕上。同时,Label出现在此屏幕上。控件进入writeText()函数。

当我从窗口按钮屏幕中删除命令参数时,会出现按钮。

有人可以帮我这个吗?

python-2.7 tkinter toplevel
2个回答
1
投票

你们有没有试过Toplevel上带图像的按钮?它似乎无法使用Toplevel下面的代码(提示窗口)。根级别没问题。

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)

0
投票

这是我的建议。

从你的问题,你已经把from tkinter import *放在你的标签中,你把Python 2.7。这是矛盾的,因为tkinter(全部小写)用于Python 3.x和Tkinter应该用于python 2.x.那就说先尝试修复你的导入。如果您实际上使用的是Python 3,则需要更正print语句以包含括号。 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?

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