2014-08-13 5 views
0

Из того, что я читал, лучше всего использовать код для графического интерфейса в классе. Как мне это сделать? Я придумал следующий код, основанный на некоторых примерах, на которые я смотрел, но это не работает, поскольку, по-видимому, DropdownMenu не определен? Я успешно использовал эту функцию без упаковки класса.Использование класса python с tkinter

import Tkinter as tk 
import tkFileDialog 
import os 

class Window(tk.Frame): 

    def DropdownMenu(options,status,name): 
    optionFrame = tk.Frame(root) 
    optionLabel = tk.Label(optionFrame) 
    optionLabel["text"] = name 
    optionLabel.pack(side=LEFT) 
    var = StringVar(root) 
    var.set(status) 
    w = tk.OptionMenu(optionFrame, var, *options) 
    w.pack(side=LEFT) 
    optionFrame.pack() 
    return w 

    def __init__(self,parent): 
    tk.Frame.__init__(self,parent) 

    ndim_options = DropdownMenu(("1","2","3"),'-',"Number of dimensions") 


if __name__ == "__main__": 
    root = tk.Tk() 
    Window(root).pack() 
    root.mainloop() 

ответ

0

При вызове DropDownMenu (внутри класса), использовать себя ...

ndim_options = self.DropdownMenu((... 
+0

Это только что дал мне еще одну ошибку - видимо DropDownMenu приобрел дополнительный аргумент откуда-то? 'ndim_options = self.DropdownMenu ((« 1 »,« 2 »,« 3 »),« - »,« Число косвенных измерений ») TypeError: DropdownMenu() принимает ровно 3 аргумента (4 данных)' – 218

+1

Это 'self' снова, используйте' def DropdownMenu (self, options, status, name): ' – fhdrsdg

+0

Это работает до' optionLabel.pack (side = LEFT) ', но я получаю ошибку' optionLabel.pack (side = LEFT) NameError: глобальное имя 'LEFT' не определено'? – 218

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