【问题标题】:how can i make my buttons resize我怎样才能让我的按钮调整大小
【发布时间】:2014-02-11 00:16:01
【问题描述】:

试图让我的按钮与我的窗口一起调整大小时一直头疼。 我尝试了各种方法,但无济于事,我设法让按钮在调整大小时移动位置,但似乎无法将按钮绑定到屏幕,我只是得到错误。

我已将我的脚本缩小到只有一个功能,以便于阅读,如果有人能指出我正确的方向,我将非常感激。

谢谢

#!/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()

【问题讨论】:

    标签: python python-2.7 tkinter


    【解决方案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()
    

    【讨论】:

    • 感谢您的回复,是的,这正是我所追求的,放大和正常选项现在可以按照我的意愿工作。现在唯一的麻烦是,当您拖动窗口的角落时,按钮不会调整大小,您知道我可以解决这个问题的任何方法吗?非常感谢
    • 反思我想这会很复杂,因为按钮需要检查屏幕的大小并相应地调整大小,也许如果按钮绑定到窗口?近一个星期以来一直在这个问题上挠头,哈哈,我设法让我的按钮放大,但是当我点击正常时,它只是把小按钮放在大按钮的上面,哈哈。每次我尝试绑定按钮时都会出错并崩溃
    • 是的,我不知道该怎么做。我想你需要一个函数来改变按钮的宽度和高度,但我不知道如何从手动调整大小的窗口中调用它。
    • 一直在尝试实现来自 link 的代码,但它对我不起作用
    【解决方案2】:

    我已经搞定了,只好改成pack的方式,最后还是破解了,谢谢大家的帮助

    #!/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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-12
      • 1970-01-01
      • 2017-05-21
      • 1970-01-01
      相关资源
      最近更新 更多