翟小麦 2023-01-25 22:21 采纳率: 75%
浏览 45
已结题

Tkinter中entry取值与显示问题

我在尝试作个tk的gui界面,想在另一个类中调用前一个类中会获得的值,请问具体怎么操作呢?

当时打算分两个类完成,WinGUI写布局,Win写事件什么的。

页面大致是这样的,想要在红色圈的entry里有结果显示。

img

以下是代码(原代码太长了,举个例子):
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中的输入框中

  • 写回答

4条回答 默认 最新

查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月3日
  • 已采纳回答 1月26日
  • 创建了问题 1月25日

悬赏问题

  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂