2014-02-11 152 views
1

有一個正確的頭痛試圖讓我的按鈕來調整我的窗口。 我嘗試了各種各樣的東西,但無濟於事,我設法讓按鈕移動位置時調整大小,但似乎無法將按鈕綁定到屏幕上,我只是得到錯誤。我怎樣才能讓我的按鈕調整大小

我已經將我的腳本縮小到只有一個功能,所以它更易於閱讀,如果有人能指出我在正確的方向,我會非常感激。

感謝

#!/usr/bin/python 
from Tkinter import* 

resizeTest = Tk() 
resizeTest.title('Resize Test') 
resizeTest.geometry('220x100') 
menubar = Menu(resizeTest) 
#----------view menu 
def normal(): 
    resizeTest.geometry('220x100') 
def enlarge(): 
    resizeTest.geometry('500x360') 

viewMenu = Menu(menubar, tearoff = 0)  
viewMenu.add_command(label="Enlarge    Alt+1", command=enlarge) 
viewMenu.add_command(label="Normal     Alt+2", command=normal) 
menubar.add_cascade(label="View", menu=viewMenu) 
buttons = Frame(resizeTest, bd=0, width=5, height=1, relief=GROOVE) 
buttons.grid(column=0, row=1, padx=1)  
numbers=["7", "4", "1", "8", "5", "2", "9", "6", "3"] 
for index in range(9): 
    n=numbers[index] 
    Button(buttons, bg="White", text=n,width=5,height=1, relief=GROOVE).grid(padx=2,pady=2, row=index%3,column=index/3) 
resizeTest.config(menu=menubar) 
resizeTest.mainloop() 

回答

1

我知道了,只好換到包裝方法,但破解了最後,感謝您的幫助

#!/usr/bin/python 
from Tkinter import * 
class resizeTest: 
    def __init__(self, master): 
     def normal(): 
      self.ma.geometry('220x100')  
     def enlarge(): 
      self.ma.geometry('500x360') 
     self.ma = master 
     self.ma.title('Resize Test') 
     self.ma.geometry('220x100') 
     self.f = Frame(self.ma) 
     self.f.pack(fill=BOTH, expand=YES) 
     self.enlarge = Button(self.f, text='Enlarge', height=1, width=10, padx=0, pady=1, command=enlarge) 
     self.enlarge.pack(side=LEFT, fill=BOTH,expand=YES) 
     self.normal = Button(self.f, text='Normal', height=1, width=10, padx=0, pady=1, command=normal) 
     self.normal.pack(side=RIGHT, fill=BOTH,expand=YES) 
root = Tk() 
app = resizeTest(root) 
root.mainloop() 
1

你有沒有嘗試過這樣的事情?添加一個函數來創建帶有寬度和高度參數的按鈕,可以在您的調整大小函數中調用以設置按鈕以匹配窗口大小。不完全自動綁定,但它的作品。

#!/usr/bin/python 
from Tkinter import* 

resizeTest = Tk() 
resizeTest.title('Resize Test') 
resizeTest.geometry('220x100') 
menubar = Menu(resizeTest) 
#----------view menu 
def normal(): 
    buttons.grid_forget() 
    resizeTest.geometry('220x100') 
    add_buttons(5, 1) 
def enlarge(): 
    buttons.grid_forget() 
    resizeTest.geometry('500x360') 
    add_buttons(18, 6) 

def add_buttons(w,h): 
    global buttons 
    buttons = Frame(resizeTest, bd=0, relief=GROOVE) 
    buttons.grid(column=0, row=1, padx=1) 
    numbers=["7", "4", "1", "8", "5", "2", "9", "6", "3"] 
    for index in range(9): 
     n=numbers[index] 
     Button(buttons, bg="White", text=n, width=w, height=h, relief=GROOVE).grid(padx=2,pady=2, row=index%3,column=index/3) 

viewMenu = Menu(menubar, tearoff = 0)  
viewMenu.add_command(label="Enlarge    Alt+1", command=enlarge) 
viewMenu.add_command(label="Normal     Alt+2", command=normal) 
menubar.add_cascade(label="View", menu=viewMenu) 
add_buttons(5, 1) 
resizeTest.config(menu=menubar) 
resizeTest.mainloop() 
+0

謝謝您的回覆,是的,這正是我是之後,放大和正常選項現在工作,我想如何。現在唯一的問題是,當你拖動窗口的角落按鈕不會調整大小,你知道我可以解決這個問題。非常感謝 – Dave

+0

反射我想象它會很複雜,因爲按鈕需要檢查屏幕的大小並相應地調整大小,也許如果按鈕被綁定到窗口?一直在我的頭上撓了近一個星期現在哈哈,我管理的最好的辦法是讓我的按鈕放大,但當我點擊正常時,它只是把大按鈕上的小按鈕。每當我嘗試綁定按鈕時,我都會收到錯誤並且崩潰 – Dave

+0

是的,我不確定如何去解決這個問題。你需要一個函數來改變按鈕的寬度和高度,我想象,但我不知道如何從手動調整大小的窗口調用它。 – atlasologist