2014-02-11 148 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