簡體   English   中英

python tkinter 內 class - 獲取 state 的小部件

[英]python tkinter inside class - getting state of widgets

我編寫了一個程序,並且正在學習類,因此重寫代碼以利用類和對象。

我的問題是,如果我從 class 創建 tkinter 小部件“下拉菜單”,我無法檢索 get.state 變量。

class ...:
    def make_drop_menu(self,parent,drop_opts,drop='empty',state=''):
        self.parent = parent
        self.drop = drop
        self.drop_opts = drop_opts

        self.state = tk.StringVar()
        self.state.set(self.drop_opts[0])  # sets default value on drop (drop down menu)
        self.drop = OptionMenu(self.parent, self.state, *self.drop_opts)  # completed drop
        return self.drop
----------------
class main:

self.widget = self.var.make_drop_menu(self.obj_mainwindow.btm_frame, self.col_opts)


Added for clearity:
window = windowclass() #windowclass is the style for tkinter. Makes a tkwindow.
self.widget = self.windowclass.var.make_drop_Menu() # 


我省略了一些代碼來簡化。 但我的主要問題是我創建了一個名為 self.widget 的小部件,它構建了我的下拉菜單。 但是,我不知道如何獲得下拉列表的 state。

希望代碼有意義。

如果您的 class 被命名為MyClass ,那么要訪問state變量,您將使用 class 的實例。 在您的情況下, self.var似乎是您的 class 的實例,因此它看起來像這樣:

self.var = MyClass()
self.var.make_drop_menu(...)
...
print(self.var.state.get())

使 make_drop_menu class 獨立於任何其他 class object。 這樣我就可以創建一個下拉菜單,分配父 tk window,並創建一個在調用時獲取 state 變量的方法。 感謝布萊恩奧克利的幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM