2017-01-01 55 views
0

我想讓gui全屏。正在工作,全屏幕,但我不能夠做到如下:Python tkinter使行在屏幕上的全部重量

1 - 第一行(行0)縮放到屏幕

的最大寬度

2 - 第1行,第一個和最後一個欄有固定的寬度和留在左側和屏幕右側(這是工作)

3 - 按鈕之間的空標籤是對中心

4 - 2個按鈕是中心在左和右對齊

這是我的代碼,直到現在:

import Tkinter as tk 
from Tkinter import * 

class MainApp(tk.Tk): 

    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 

     container = tk.Frame(self) 
     container.pack(side="top", fill="both", expand=True) 
     container.grid_rowconfigure(0, weight=1) 
     container.grid_columnconfigure(0, weight=1) 

     self.frames = {} 
     for F in (StartPage, PageOne, PageTwo): 
      page_name = F.__name__ 
      frame = F(parent=container, controller=self) 
      self.frames[page_name] = frame 
      frame.grid(row=0, column=0, sticky="nsew") 
      frame.grid_columnconfigure(0, weight=1) 

     self.show_frame("StartPage") 

    def show_frame(self, page_name): 
     frame = self.frames[page_name] 
     frame.tkraise() 

class StartPage(tk.Frame): 

    def __init__(self, parent, controller): 
     tk.Frame.__init__(self, parent) 
     self.controller = controller 
     #line 0 
     label0 = tk.Label(self, text = 'full row', height=3, borderwidth=1) 
     label0.configure(relief='raised') 
     label0.grid(row=0, column=0, columnspan=12) 

     # line 1 
     label1 = tk.Label(self, text='0', width=10) 
     label1.configure(relief='raised', bg='white') 
     label1.grid(row=1, column=0, sticky='w') 

     buttonhlp = tk.Button(self, text="HELP", command=close_window) 
     buttonhlp.grid(row=1, column=1, columnspan=4) 

     label1 = tk.Label(self, text='') 
     label1.grid(row=1, column=5) 

     label1 = tk.Label(self, text='') 
     label1.grid(row=1, column=6) 

     buttonquit = tk.Button(self, text="Quit", command=close_window) 
     buttonquit.grid(row=1, column=7, columnspan=4) 

     label1 = tk.Label(self, text='11', width=10) 
     label1.configure(relief='raised', bg='white') 
     label1.grid(row=1, column=11, sticky='e') 


class PageOne(tk.Frame): 

    def __init__(self, parent, controller): 
     tk.Frame.__init__(self, parent) 
     self.controller = controller 
     label = tk.Label(self, text="This is page 1") 
     label.pack(side="top", fill="x", pady=10) 
     button = tk.Button(self, text="Go to the start page", 
          command=lambda: controller.show_frame("StartPage")) 
     button.pack() 


class PageTwo(tk.Frame): 

    def __init__(self, parent, controller): 
     tk.Frame.__init__(self, parent) 
     self.controller = controller 
     label = tk.Label(self, text="This is page 2") 
     label.pack(side="top", fill="x", pady=10) 
     button = tk.Button(self, text="Go to the start page", 
          command=lambda: controller.show_frame("StartPage")) 
     button.pack() 




def close_window(): 
    app.destroy() 


if __name__ == "__main__": 
    app = MainApp() 

    app.overrideredirect(True) 
    app.geometry("{0}x{1}+0+0".format(app.winfo_screenwidth(), app.winfo_screenheight())) 
    app.focus_set() # <-- move focus to this widget 


    app.mainloop() 

回答

0

不能肯定是最好的解決辦法,但我做到了這樣的

import Tkinter as tk 
from Tkinter import * 

class MainApp(tk.Tk): 

    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 

     container = tk.Frame(self) 
     container.pack(side="top", fill="both", expand=True) 
     container.grid_rowconfigure(0, weight=1) 
     container.grid_columnconfigure(0, weight=1) 

     self.frames = {} 
     for F in (StartPage, PageOne, PageTwo): 
      page_name = F.__name__ 
      frame = F(parent=container, controller=self) 
      self.frames[page_name] = frame 
      frame.grid(row=0, column=0, columnspan=12,sticky="nsew") 
      frame.grid_columnconfigure(0, weight=1) 
      frame.grid_columnconfigure(1, weight=1) 
      frame.grid_columnconfigure(2, weight=1) 
      frame.grid_columnconfigure(3, weight=1) 
      frame.grid_columnconfigure(4, weight=1) 
      frame.grid_columnconfigure(5, weight=1) 
      frame.grid_columnconfigure(6, weight=1) 
      frame.grid_columnconfigure(7, weight=1) 
      frame.grid_columnconfigure(8, weight=1) 
      frame.grid_columnconfigure(9, weight=1) 
      frame.grid_columnconfigure(10, weight=1) 
      frame.grid_columnconfigure(11, weight=1) 



     self.show_frame("StartPage") 

    def show_frame(self, page_name): 
     frame = self.frames[page_name] 
     frame.tkraise() 

class StartPage(tk.Frame): 

    def __init__(self, parent, controller): 
     tk.Frame.__init__(self, parent) 
     self.controller = controller 
     #line 0 
     label0 = tk.Label(self, text = '') 
     label0.configure(relief='raised') 
     label0.grid(row=0, column=0, columnspan=12, sticky="nsew") 

     # line 1 
     label1 = tk.Label(self, text='0', width=10) 
     label1.configure(relief='raised', bg='white') 
     label1.grid(row=1, column=0, sticky='w') 

     buttonhlp = tk.Button(self, text="HELP", command=close_window) 
     buttonhlp.grid(row=1, column=1, columnspan=4) 

     label1 = tk.Label(self, text='xx') 
     label1.grid(row=1, column=5) 

     label1 = tk.Label(self, text='tt') 
     label1.grid(row=1, column=6) 

     buttonquit = tk.Button(self, text="Quit", command=close_window) 
     buttonquit.grid(row=1, column=7, columnspan=4) 

     label1 = tk.Label(self, text='11', width=10) 
     label1.configure(relief='raised', bg='white') 
     label1.grid(row=1, column=11, sticky='e') 





class PageOne(tk.Frame): 

    def __init__(self, parent, controller): 
     tk.Frame.__init__(self, parent) 
     self.controller = controller 
     label = tk.Label(self, text="This is page 1") 
     label.pack(side="top", fill="x", pady=10) 
     button = tk.Button(self, text="Go to the start page", 
          command=lambda: controller.show_frame("StartPage")) 
     button.pack() 


class PageTwo(tk.Frame): 

    def __init__(self, parent, controller): 
     tk.Frame.__init__(self, parent) 
     self.controller = controller 
     label = tk.Label(self, text="This is page 2") 
     label.pack(side="top", fill="x", pady=10) 
     button = tk.Button(self, text="Go to the start page", 
          command=lambda: controller.show_frame("StartPage")) 
     button.pack() 




def close_window(): 
    app.destroy() 


if __name__ == "__main__": 
    app = MainApp() 

    app.overrideredirect(True) 
    app.geometry("{0}x{1}+0+0".format(app.winfo_screenwidth(), app.winfo_screenheight())) 
    app.focus_set() # <-- move focus to this widget 


    app.mainloop() 
工作