Python Tkinter回调函数在主循环之前执行



我试图建立一个gui与串行设备通信。为此,我使用了Tkinter。我的问题是,每次执行脚本时,只执行estcon -函数和主循环,因此gui永远不会启动。如果我把estCon函数的定义放在主循环之后,它说没有找到estCon函数。

def estCon():
    # establish connection
    while True:
        try:
            ser = serial.Serial(port, baud, bytesize)
            print('Connected.')
            break
        except serial.SerialException:
            print('waiting for device ' + port + ' to be available.') 
            time.sleep(3)
    starttime = time.time()
    outfile = open(filename, 'a')
    doprint = True    
root = Tk()
estConButton = Button(root, text="Establish serial connection",
                      command=estCon())
estConButton.pack()
root.mainLoop()

你需要改变这一行:

estConButton = Button(root, text="Establish serial connection", command=estCon())

:

estConButton = Button(root, text="Establish serial connection", command=estCon)

注意缺少括号()。基本上,您需要传递一个引用到当您按下按钮时将被调用的函数,而不是实际调用。

相关内容

  • 没有找到相关文章

最新更新