【发布时间】:2018-02-20 17:40:11
【问题描述】:
class questions(tkinter.Tk):
def __init__(self, *args, **kwargs):
tkinter.Tk__init__(self, *args, **kwargs)
container = tkinter.Frame(self)
container.pack(side='top', fill='both', expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (StartPage, QuestionOne, QuestionTwo)
frame = F(container, self)
self.frames[F] = frame
frame.grid(row = 0, column= 0, sticky='nsew')
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
def show_choice(self, cont)
global pr_var
global x
questions.pr_var = x.get()
var_list[0]= questions.pr_var
print('pr_var = ' + str(questions.pr_var)) ## i print it to check
frame= self.frames[QuestionOne]
frame.tkraise()
class Startpage(tkinter.Frame):
def __init__(self, parent, controller):
tkinter.Frame.__init__(self, parent)
label= tkinter.Label(self, text='Hello', font= LARGE_FONT)
label.pack(pady=10, padx=10)
button=ttk.Button(self, text='Start', command= Lambda:controller.show_frame(QuestionOne))
button.pack()
class QuestionOne(tk.Frame):
def __init__(self, parent, controller):
tkinter.Frame.__init__(self, parent)
label= tkinter.Label(self, text='How many pieces?', font= LARGE_FONT)
label.grid(row= 3, column=1, pady=10, padx=50)
global x
self.radio_num= tkinter.IntVar()
x = self.radio_num
self.rb1 = tkinter.Radiobutton(self, text='one', variable=self.radio_num, value=1)
self.rb2 = tkinter.Radiobutton(self, text='two', variable=self.radio_num, value=2)
self.rb1.grid(row=5, column=0, padx=10)
self.rb2.grid(row=6, column=0, padx=10)
button1=ttk.Button(self, text='Next', command= Lambda:controller.show_choice(self))
button2=ttk.Button(self, text='back', command= Lambda:controller.show_frame(StartPage))
button1.grid(row=25, column=1, padx=10, pady=50)
button2.grid(row=25, column=0, padx=10, pady=50)
class QuestionTwo(tkinter.Frame):
def __init__(self, parent, controller):
tkinter.Frame.__init__(self, parent)
label= tkinter.Label(self, text='So you have ' +str(var_list[0]) + ' piece(s)', font= LARGE_FONT) ## here is the problem
label.grid(row= 3, column=1, pady=10, padx=50)
global x
global pr_var
button1=ttk.Button(self, text='back', command= Lambda:controller.show_frame(QuestionOne))
button1.grid(row=25, column=1, padx=10, pady=50)
app=questions()
app.mainloop()
我目前正在开发一个程序,希望能得到一些帮助。 总的来说,我在编程方面很新,所以请耐心等待.. :-)
所以我编写了一个程序,它从用户那里获取一些变量,然后处理它们(我完成了这个处理程序,所以这里不需要帮助)。然后我开始编写一个 GUI,其中会询问一些问题,并且来自用户的输入将被保存为变量。在这些问题的最后,所有变量都将被保存并从处理程序中使用。
所以我卡住的地方是我无法保存变量!!
我正在使用 Gui 的类。第一个类以以下形式保存主框架:
def __init__(self, *args, **kwargs)
对于我使用的每个页面,我都会创建一个引用主类的新类(新框架)。
现在的问题是,例如在第 2 页,用户第一次选择一个单选按钮,然后该值是从 Primary 类(每个新页面总是引用)的方法计算出来的,里面有“command”这种方法我在计算后打印值(以查看它是否正确保存)并且它可以工作。直到这里一切正常。
我的问题是当我使用第 3 页中保存的变量时它不起作用...
我试图将类实例设为全局变量,它只在 Primary 类的方法内工作。当我想在另一个类中使用它(我的意思是在另一个页面中)之后它不起作用。 我尝试将引用作为 ClassA.variable 进行引用,但这也不起作用..我尝试在 init 方法中使用 None 定义变量(否则我得到未定义“变量”)以及何时存在从第 2 页计算它可以工作,但是当在第 3 页我想将变量以字符串的形式放在带有 tkinter 的标签内时,我得到值 None 虽然我应该是一个全局变量...我很困惑
我的主要目标是列出用户将通过单选按钮提供的变量。此列表必须在列表之外,以便处理程序轻松访问它们。
我也尝试过..创建一个列表,但是当我引用列表 [0] 时(例如,对于第一个变量,我得到那个...列表索引超出范围
如何获取类实例并将它们作为变量转换为列表组件?
PS:变量不是整数或字符串..例如是对类实例的引用......
list[0] = x.get()
其中全局 x 和
self.radio_num =tkinter. IntVar()
和
x= self.radio_num
PS2:我不知道我是否正确解释了所有内容,以便有人可以准确理解我的问题是什么......如果没有,如果需要,我可以上传一些代码
无论如何谢谢:-)
【问题讨论】:
-
你能提供一份代码吗?
-
我刚刚上传了一部分代码..我希望现在我的问题更容易理解