我在尝试作个tk的gui界面,想在另一个类中调用前一个类中会获得的值,请问具体怎么操作呢?
当时打算分两个类完成,WinGUI写布局,Win写事件什么的。
页面大致是这样的,想要在红色圈的entry里有结果显示。
以下是代码(原代码太长了,举个例子):
class WinGUI(Tk):
def __init__(self):
super().__init__()
self.__win()
self.label_frame_feature = Frame_feature(self)
self.button_calcNow = self.__button_calcNow()
def __win(self):
self.title("Heat Loss Calculator")
width = 550
height = 540
screenwidth = self.winfo_screenwidth()
screenheight = self.winfo_screenheight()
geometry = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
self.geometry(geometry)
self.resizable(width=True, height=True)
class Frame_feature(LabelFrame):
def __init__(self,parent):
super().__init__(parent)
self.__frame()
self.select_box_level = self.select_box_level()
def select_box_level(self):
self.var = StringVar()
self.cb = Combobox(self, state="readonly",textvariable=self.var)
self.cb['values'] = ("Ground floor","Intermediated level","Top floor")
self.cb.place(x=10, y=40, width=150, height=24)
return self.cb, self.var.get() #这个self.var.get()就是我想后面用的
class Frame_result(Frame):
def __init__(self,parent):
super().__init__(parent)
self.__frame()
self.input_hLoss = self.input_hLoss()
def input_hLoss(self):
ipt = Entry(self)
ipt.place(x=120, y=30, width=81, height=24)
return ipt
这是另一个Win类
from tkinter import *
from tkinter.ttk import *
from tkinter_helper import WinGUI
class Win(WinGUI):
def __init__(self):
super().__init__()
self.__event_bind()
def slc_get_level(self,evt):
print(self.level)
def __event_bind(self):
self.button_calcNow.bind('<Button-1>',self.slc_get_level)
if __name__ == "__main__":
win = Win()
win.mainloop()
我的解答思路和尝试过的方法
self.level_get = Frame_feature(self).select_box_level[1]
这是我后来加在WinGUI 的init下面的
我想达到的效果
level那个下拉框中的值可以出现在 Frame_result中的输入框中