导入带有单选按钮的模块时出现问题-python
嗨,我制作了一个运行各种其他程序的程序。我导入了这个模块,对于没有单选按钮的程序,它可以正常工作。带有单选按钮的程序在自己运行时工作正常。当它们通过我的菜单程序运行时,单选按钮不会给出IntVar值。有人知道怎么解决这个问题吗?这些模块是我自己的程序,但它们都使用Tkinter。以下是菜单的代码:导入带有单选按钮的模块时出现问题-python,python,import,module,tkinter,radio-button,Python,Import,Module,Tkinter,Radio Button,嗨,我制作了一个运行各种其他程序的程序。我导入了这个模块,对于没有单选按钮的程序,它可以正常工作。带有单选按钮的程序在自己运行时工作正常。当它们通过我的菜单程序运行时,单选按钮不会给出IntVar值。有人知道怎么解决这个问题吗?这些模块是我自己的程序,但它们都使用Tkinter。以下是菜单的代码: from Tkinter import * def cmd(): if var.get() == 1: import animal_age_calculator
from Tkinter import *
def cmd():
if var.get() == 1:
import animal_age_calculator
animal_age_calculator.createDisplay()
if var.get() == 2:
import temperatureCalculator
temperatureCalculator.createDisplay()
if var.get() == 3:
import calculator
calculator.createDisplay()
if var.get() == 4:
import currencyConverter
currencyConverter.createDisplay()
def createDisplay():
global var
root = Tk()
root.title('Calculator')
title = Label(root, text='Please Select which Calculator you would like to use', font=50)
title.grid(row=0, column=0)
calcType = Frame(root)
calcType.grid(row=1, column=0)
var = IntVar()
animal = Radiobutton(calcType, text='Animal Age Calculator', variable=var, value=1)
animal.pack()
tempConverter = Radiobutton(calcType, text='Temperature Calculator', variable=var, value=2)
tempConverter.pack()
calc = Radiobutton(calcType, text='Calculator', variable=var, value=3)
calc.pack()
currency = Radiobutton(calcType, text='Currency Converter', variable=var, value=4)
currency.pack()
select = Button(root, text='Go', command=cmd)
select.grid(row=2, column=0)
root.mainloop()
if __name__ == '__main__':
createDisplay()
以下是其中一个radiobutton程序的代码:
from Tkinter import *
def convert(temperature):
global var4
a = var4.get()
print(str(a))
if a == 1:
print 'test2'
display.delete(1.0, END)
finalTemp = int(temperature)*1.8+32
finalTemp = round(finalTemp, 1)
display.insert(INSERT, finalTemp)
if a == 2:
display.delete(1.0,END)
finalTemp = int(temperature)-32/1.8
finalTemp = round(finalTemp, 1)
display.insert(INSERT, finalTemp)
def createDisplay():
global display, var4
root = Tk()
root.title('Temperature Converter')
root.resizable(width=False, height=False)
title = Label(root, text="Welcome to the temperature converter", font=36)
title.grid(row=0, column=1, columnspan=3)
selTemp = LabelFrame(root, text="Please select your temperature")
selTemp.grid(row=1, column=2)
temp = Scale(selTemp, orient=HORIZONTAL, sliderlength=20, from_=0, to=250, length=250, command=convert)
temp.pack()
temperature = temp.get()
displayFrame = LabelFrame(root, text="Your converted temperature is")
displayFrame.grid(row=1, column=3)
display = Text(displayFrame, width=6, height=1)
display.pack()
var4 = IntVar()
tempType = LabelFrame(root, text='Please select your temperature you would like to convert')
tempType.grid(row=1, column=1)
celcius = Radiobutton(tempType, text="Celcius", variable=var4, value=1)
celcius.pack()
fahrenheit = Radiobutton(tempType, text="Fahrenheit", variable=var4, value=2)
fahrenheit.pack()
root.mainloop()
if __name__ == '__main__':
createDisplay()
问题的关键在于您正在创建两个
Tk
实例。你不能那样做。Tkinter的设计目的是让您在任何时候都只创建一个Tk实例。您的模块应该创建Toplevel
的实例,而不是Tk
的实例,并且在导入模块时不应该创建新的事件循环 你能给出一些示例代码吗?另外,请提供您正在使用的模块的详细信息。这些模块是我自己的python代码,但它们都使用Tkinter。这是一个很好的开始,但您可能必须提供一些示例代码,供人们在尝试解决您的问题时使用:)如果您遇到错误,那么如果您还可以提供有用的回溯。我已经用代码编辑了原始帖子。没有错误发生,只是不起作用。我现在就试试。。。如果你说的是真的,为什么没有单选按钮的程序工作得很好?@DecStanley:不可能确定,但我猜这是因为其他程序不使用IntVar或StringVar。问题可能比这更深一点,在评论框中回答不了。可以说,Tkinter的设计并不是为了在同一进程中同时运行两个Tk实例。