Радиопереключатель tkinter и mainloop не работают должным образом в python3, используя купол Enthought - PullRequest
0 голосов
/ 27 сентября 2018

Я работаю над программой на Python, использующей Enthought Canopy (для сбора данных).Однако у меня есть проблема с использованием tkinter при работе в среде python 3.5.Я не могу получить значения своих радиокнопок с помощью функции 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()

1 Ответ

0 голосов
/ 01 октября 2018

Итак, я наконец-то обнаружил, что проблема, похоже, связана с Canopy Enthought.

Программа работает правильно как в PyCharm, так и в Anyonda Spyder, однако я до сих пор не знаю, что является причиной проблемы в Canopy.Но использование другой IDE, похоже, решает проблему.

...