首页 > 解决方案 > 带线程的全局变量和 Tkinter

问题描述

所以我是一个编程新手,我正在努力让这个线程工作。但是,我正在努力使用线程和 tkinter。我认为问题出在全局变量上,但我真的不知道是不是这样。任何帮助表示赞赏。(此代码也已修改,我需要线程,因为函数最终会有一个循环)。

from tkinter import *
import serial
import threading

root = Tk()
root.title("MIDI Piano")
root.geometry('250x250+250+250')

ser = None
clicked = StringVar()

COM_ports = ["COM1",
         "COM2",
         "COM3",
         "COM4",
         "COM5",
         "COM6",
         "COM7",
         "COM8",
         "COM9",
         "COM10"]

def serial_comms():
    global ser
    global clicked
    COM = clicked.get()
    ser = serial.Serial(COM, 9600)

clicked.set("COM1")

# note there are definitions here and other widgets 

# Widgets that need to be updated
COM_frame = LabelFrame(root, text="Choose COM Port", padx=30, pady=30)
COM_frame.place(x=1, y=200)


COM_drop = OptionMenu(COM_frame, clicked, *COM_ports)
COM_drop.pack()

COM_button = Button(COM_frame, text="Execute Port Selection", 
command=threading.Thread(serial_comms).start())
COM_button.pack()

root.mainloop()

任何帮助,将不胜感激!提前致谢 :)

标签: pythonmultithreadingtkinter

解决方案


推荐阅读