1

我正在尝试构建一个用于与串行设备通信的 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()
4

1 回答 1

3

您需要更改此行:

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

到:

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

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

于 2013-04-06T00:48:24.743 回答