Tkinter开发:如何将用户输入变量传递给自定义模块中的函数
解决方法
你当前的代码存在两个核心问题:一是myfunction.py中的函数定义了self参数,但它不属于界面类的方法,没有权限直接访问界面类的属性;二是界面的按钮没有绑定点击回调,触发不了传值逻辑。按以下步骤修改即可:
第一步:修改myfunction.py代码
将函数调整为直接接收外部传入的价格参数,不需要self参数:
def minimum_price(price_min): print(f'Minimum price is: {price_min}')
第二步:修改主界面代码
新增按钮点击回调方法,拿到用户输入的价格后传递给myfunction的对应函数:
import tkinter as tk from tkinter import ttk import myfunction # this is my module that has another function class Interface(ttk.Frame): def __init__(self, container): super().__init__(container) self.user_price_minimum = tk.StringVar() minimum_price = ttk.Label(self, text="Minimum price is: ") minimum_price.grid(row=0, column=0, padx=5, pady=5) minimum_price_entry = ttk.Entry(self, width=15, textvariable = self.user_price_minimum) minimum_price_entry.grid(row=0, column=1) minimum_price_entry.focus() ############# # 给按钮绑定点击回调函数 button = ttk.Button(self, text="Use price", command=self.handle_price_submit) button.grid(column=0, row=2, columnspan=2, padx=5, pady=5) # 新增按钮点击处理方法 def handle_price_submit(self): # 简单校验避免非数字输入报错 try: price_min = int(self.user_price_minimum.get()) # 将价格值作为参数传入myfunction的函数 myfunction.minimum_price(price_min) except ValueError: print("请输入有效的数字价格") root = tk.Tk() root.geometry("450x250") root.title("Looking for a flat") root.columnconfigure(0, weight=1) frame = Interface(root) frame.pack() root.mainloop()
修改完成后,用户点击「Use price」按钮时,就会自动把输入的价格传到myfunction的minimum_price函数中执行后续逻辑。
内容的提问来源于stack exchange,提问作者Tmiskiewicz
相关产品推荐
相关产品推荐

