0

嗨,我正在尝试创建一个带有标签、文本框、按钮等的 Python GUI,下面是我运行良好的代码。

问题:在我的按钮旁边,其余(标签,tb,列表框)都显示在另一个框架中。有没有办法在一个框架中打开并显示所有内容?

from Tkinter import *
import webbrowser
import tkMessageBox
import Tkinter as Tk

def actionDirectory():
    webbrowser.open('C:\AgmPlots')

def actionOpenFile():
    print "Done"

win = Tk.Toplevel()  #Open up connection and declare button and label
frame = Tk.Frame(master=win).grid(row=1, column=1)

Lb1 = Listbox(win)
Lb1.insert(1, "Python")
Lb1.insert(2, "Perl")
Lb1.insert(3, "C")
Lb1.insert(4, "PHP")
Lb1.insert(5, "JSP")
Lb1.insert(6, "Ruby")
Lb1.pack()
button = Tk.Button(master=frame, text='Open Folder', command=actionDirectory)
button1 = Tk.Button(master=frame, text='Open Text', command=actionOpenFile)
button.pack()
button1.pack()
win.mainloop()
4

3 回答 3

1

grid/pack什么都不返回。

frame = Tk.Frame(master=win).grid(row=1, column=1)

执行以下行的原因frameNoneWidget(master=frame, ...)之后比Widget(master=None)这导致该小部件属于根窗口而不是另一个顶级窗口。

替换上面的行如下。

frame = Tk.Frame(master=win)
frame.pack()

现在,您将获得两个窗口,一个(根窗口)和另一个使用Toplevel.

如果您只想要一个窗口,请替换以下内容

win = Tk.Toplevel()

和:

win = Tk.Tk()
于 2013-10-16T06:27:05.093 回答
0

你可以试试这个。

from Tkinter import *
import webbrowser
import tkMessageBox
import Tkinter as Tk

def actionDirectory():
    webbrowser.open('C:\AgmPlots')

def actionOpenFile():
    print "Done"

win = Tk.Tk()  #Open up connection and declare button and label
master=win

Lb1 = Listbox(win)
Lb1.insert(1, "Python")
Lb1.insert(2, "Perl")
Lb1.insert(3, "C")
Lb1.insert(4, "PHP")
Lb1.insert(5, "JSP")
Lb1.insert(6, "Ruby")
Lb1.pack()
button = Tk.Button(text='Open Folder', command=actionDirectory)
button1 = Tk.Button(text='Open Text', command=actionOpenFile)
button.pack()
button1.pack()
win.mainloop()
于 2013-10-16T06:34:54.727 回答
0
于 2013-10-16T06:23:46.257 回答