0

我正在使用 Enthought Canopy(用于数据采集)开发一个 python 程序。但是,在 python 3.5 环境中工作时,我在使用 tkinter 时遇到了问题。我无法使用该var.get()功能获取单选按钮的值。(都将其定义为tk.IntVar()使用整数时或tk.StringVar()在我的示例代码中)

此外,按下退出按钮时主循环不会停止,tkinter 窗口关闭但程序继续运行。

当切换到 python 2.7 环境时,我没有这些问题。下面是代码的精简版本。

在此先感谢您的帮助

import tkinter as tk

class GUI:
    def __init__ (self, master):
        self.master = master #Defining the root window

        #Create container
        frame = tk.Frame(master)

        #Defining the labels
        fontName = 'Helvetica 10'
        self.waveform = tk.StringVar()

        self.sawtoothRadio = tk.Radiobutton(frame, text='Sawtooth', 
                                                    variable=self.waveform, value="sawtooth")
        self.triangleRadio = tk.Radiobutton(frame, text='Triangle', 
                                                    variable=self.waveform, value="triangle")
        self.triangleRadio.select()
        self.startButton = tk.Button(frame, text="Start", font = fontName, command=self.calibrate)

        #Structuring the GUI
        self.sawtoothRadio.grid(row=9, column=0)
        self.triangleRadio.grid(row=9, column=1)
        self.startButton.grid(row=10, column=1)

        frame.pack(side=tk.LEFT)

    def draw_graph(self, right_frame):
        #Plotting the graph
        if self.waveform.get() == "sawtooth":
            sawtooth = True
        else:
            sawtooth = False

    def calibrate(self):
        #Plotting the graph
        if self.waveform.get() == "sawtooth":
            sawtooth = True
        else:
            sawtooth = False

root = tk.Tk()
newWindow = GUI(root)
root.mainloop()
4

1 回答 1

0

所以我终于发现问题似乎出在Enthought的Canopy上。

该程序在 PyCharm 和 Anaconda 的 Spyder 中都可以正常运行,但是我仍然不知道导致 Canopy 问题的原因。但是使用另一个IDE似乎可以解决问题。

于 2018-10-01T09:26:06.473 回答