鱼C论坛

 找回密码
 立即注册
查看: 1413|回复: 2

[已解决]tkinter bind方法

[复制链接]
发表于 2021-7-20 07:00:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Wirror 于 2021-7-20 07:08 编辑

# 这段代码绑定Enter键触发的事件为ok,为什么窗口打开后还没按下回车ok就被调用了(代码从front_sell进入的,没有其他问题),
而且为什么在ok函数中没法get文本框的字符呢?
另:写在类中的方法中参数event和master是干什么用的,一直没有弄明白
from tkinter import *
class Application_ui(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.master.title('Form1')
        self.master.geometry('1424x862')
        self.createWidgets()


    def createWidgets(self):
        self.top = self.winfo_toplevel()

        self.style = Style()
        front_sell_window.bind('<KeyPress-Return>', self.ok())

class Application(Application_ui):
    #这个类实现具体的事件处理回调函数。界面生成代码在Application_ui中。
    def __init__(self, master=None):
        Application_ui.__init__(self, master)

    def ok(self):  # todo 按下回车后的操作:
        aaa = 'aaa'
        print(aaa)
def front_sell(t):
    global front_sell_window
    front_sell_window = Tk()
    global top
    top = t
    front_sell_window.protocol('WM_DELETE_WINDOW', me_quit)
    Application(front_sell_window).mainloop()
        
最佳答案
2021-7-22 13:48:29
1. 代码第15行
front_sell_window.bind('<KeyPress-Return>', self.ok())
bind函数要求传入的是一个函数的引用,注意,是函数的引用
其实就是传入一个函数名

而你写了self.ok(),导致代码运行到这里就自动调用self.ok这个函数,所以出错。
2.由于你的错误,gui窗口在初始化之前就调用了self.ok函数,文本框都还没准备好呢,怎么get内容呢

3.参数event:bind方法在监视到event事件后,会调用传入的函数(就是self.ok)
而且会自动传入event对象,这个对象包含了发出事件的对象,发出事件的坐标等待
而master参数,我觉得应该是父组件(就是上一层的组件,比如Tk类的对象)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-22 13:48:29 | 显示全部楼层    本楼为最佳答案   
1. 代码第15行
front_sell_window.bind('<KeyPress-Return>', self.ok())
bind函数要求传入的是一个函数的引用,注意,是函数的引用
其实就是传入一个函数名

而你写了self.ok(),导致代码运行到这里就自动调用self.ok这个函数,所以出错。
2.由于你的错误,gui窗口在初始化之前就调用了self.ok函数,文本框都还没准备好呢,怎么get内容呢

3.参数event:bind方法在监视到event事件后,会调用传入的函数(就是self.ok)
而且会自动传入event对象,这个对象包含了发出事件的对象,发出事件的坐标等待
而master参数,我觉得应该是父组件(就是上一层的组件,比如Tk类的对象)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-22 13:49:42 | 显示全部楼层
忘了说第一个问题的解决方法,把self.ok()的括号去掉即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-14 01:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表