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

на отражение Я представляю, что это будет сложно, потому что кнопкам нужно проверить размер экрана и соответственно изменить размер, возможно, если кнопки были привязаны к окну? поцарапал мне голову на этом в течение почти недели. LOL. Лучшее, что мне удалось, это увеличить мои кнопки, но когда я щелкнул нормально, просто положил маленькие кнопки поверх больших LOL. Каждый раз, когда я пытался связать кнопки, у меня были ошибки, и он разбился. – Dave

+0

Да, я не уверен, как это сделать. Я бы предположил, что вам понадобится функция для изменения ширины и высоты кнопки, но я не знаю, как назвать это из окна, размер которого изменяется вручную. – atlasologist

Смежные вопросы