0

こんにちは、ラベル、テキストボックス、ボタンなどを使用して Python GUI を作成しようとしています。以下は正常に動作しているコードです。

問題: ボタンの横に、残り (ラベル、tb、リストボックス) がすべて別のフレームに表示されます。1 つのフレームですべてを開いて表示する方法はありますか?

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)

次の行を実行すると、次のようframeになりNoneます。Widget(master=frame, ...)その後、Widget(master=None)そのウィジェットが別のトップレベル ウィンドウではなくルート ウィンドウに属するようになります。

上記の行を次のように置き換えます。

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

これで、1 つ (ルート ウィンドウ) と を使用して作成された別の 2 つのウィンドウが得られますToplevel

1つのウィンドウだけが必要な場合は、次を置き換えます

win = Tk.Toplevel()

と:

win = Tk.Tk()
于 2013-10-16T06:27:05.093 に答える
0
于 2013-10-16T06:23:46.257 に答える
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 に答える