2017-03-06 73 views
0

我已經看過其他類似標題的問題,並已閱讀答案,但是沒有任何工作適合我。我正在嘗試使用一個列表框+滾動條和一個組合框下方的兩個按鈕來製作一個簡單的應用程序。我用PyQt的,但這是我第一次使用Tkinter的:小工具沒有出現在簡單的tkinter應用程序

import tkinter as tk 


class InputWindow(tk.Frame): 

    def __init__(self, parent, *args, **kwargs): 
     tk.Frame.__init__(self, parent, *args, **kwargs) 
     self.parent = parent 
     self.initialize() 

    def initialize(self): 
     # Group box to contain the widgets 
     self.input = tk.LabelFrame(self, text="Input Files") 

     # Listbox with scrollbar to the side 
     self.listbox = tk.Listbox(self.input) 
     self.scrollbar = tk.Scrollbar(self.listbox, orient=tk.VERTICAL) 
     self.listbox.config(yscrollcommand=self.scrollbar.set) 
     self.scrollbar.config(command=self.listbox.yview) 
     self.listbox.grid(row=0, column=0, columnspan=2) 

     self.add_btn = tk.Button(self.input, text="Add...") 
     self.add_btn.grid(row=1, column=0) 

     self.remove_btn = tk.Button(self.input, text="Remove") 
     self.remove_btn.grid(row=1, column=1) 


if __name__ == "__main__": 

    root = tk.Tk() 
    app = InputWindow(root) 
    root.mainloop() 

這或多或少是我想要的,但在Tkinter的:

enter image description here

我在做什麼錯了/如何能這樣做?

回答

2

你忘了兩件事情:

  1. 要打包(或電網或地方)app
  2. 要打包(或電網或地方)input

你搭配方案要求的陳述:

import tkinter as tk 


class InputWindow(tk.Frame): 

    def __init__(self, parent, *args, **kwargs): 
     tk.Frame.__init__(self, parent, *args, **kwargs) 
     self.parent = parent 
     self.initialize() 

    def initialize(self): 
     # Group box to contain the widgets 
     self.input = tk.LabelFrame(self, text="Input Files") 

     # Listbox with scrollbar to the side 
     self.listbox = tk.Listbox(self.input) 
     self.scrollbar = tk.Scrollbar(self.listbox, orient=tk.VERTICAL) 
     self.listbox.config(yscrollcommand=self.scrollbar.set) 
     self.scrollbar.config(command=self.listbox.yview) 
     self.listbox.grid(row=0, column=0, columnspan=2) 

     self.add_btn = tk.Button(self.input, text="Add...") 
     self.add_btn.grid(row=1, column=0) 

     self.remove_btn = tk.Button(self.input, text="Remove") 
     self.remove_btn.grid(row=1, column=1) 

     self.input.pack(expand=1, fill="both") # Do not forget to pack! 

if __name__ == "__main__": 

    root = tk.Tk() 
    app = InputWindow(root) 
    app.pack(expand=1, fill="both") # packing! 
    root.mainloop()