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()
私は現在プログラムを作成しています。私は少し助けていただきたいと思います。 私は一般的なプログラミングではかなり新しいですので、患者にしてください。:-)クラスのインスタンスを変数として(クラスの外に)変数として保存するPython
私は、ユーザーからいくつかの変数を受け取り、それらを処理するプログラムを作成しました。必要)。次に、いくつかの質問が出され、ユーザーからの入力が変数として保存されるGUIを作成し始めました。これらの質問の最後に、すべての変数が保存され、処理プログラムから使用されます。
私はどこにいるのですか?変数を保存できません。
私は最初のクラスはの形でメインフレームを保持するためのクラスGui..where使用しています:
def __init__(self, *args, **kwargs)
と私が使用してすべてのページのために、私は新しいクラス(新しいフレーム)を作成参照をプライマリクラスに
ここで問題となるのは、たとえば、ユーザーが初めてラジオボタンを選択した場合、その値は「コマンド」で(すべての新しいページが常に参照する)プライマリクラスのメソッドから計算され、このメソッドの内部では、計算後に値を出力します(正しく保存されているかどうかを確認するために)。ここまでは大丈夫です。
私の問題は、私はグローバル変数としてクラスのインスタンスを作ってみました、それはプライマリのみclass..afterのメソッド内で動作します...私は3ページに保存された変数を使用する場合、それは仕事をdoesntの
です私は別のクラス(別のページでは意味する)で使用したいときはうまくいきません。 私はClassA.variableとして参照しようとしましたが、どちらも動作しませんでした。私は変数をinitメソッドの中でNoneを定義しようとします(そうでなければ、 '変数'は定義されていません) 2ページ目から計算されていますが、3ページ目で変数をtkinterのラベル内の文字列の形にしたい場合は、グローバル変数になっていましたが、値は得られます...私は非常に混乱しています
私の主な目標は、ユーザーがラジオボタンで与える予定の変数でリストを作成することです。このリストは、処理プログラムが簡単にアクセスするためにリストの外になければなりません。
は私がリストを作るtoo..toことを試みたが、私はリストを参照したときに[0](最初の変数のためにたとえば、私が範囲外のこと...リストインデックスを取得どのように私がすることができますクラスのインスタンスを取得し、変数としてリストコンポーネントにそれらを回す??
PS:変数が整数でないか、例えば、クラスのインスタンスへの参照がstrings..theある......
list[0] = x.get()
グローバルxと
self.radio_num =tkinter. IntVar()
と
x= self.radio_num
PS2:誰かが私の問題がある正確に理解できるように、私はすべてを正しく説明している場合、私は知りません...ない場合
コードのコピーを提供できますか? –
私はちょうどコードの一部をアップロードしました。私は今、私の問題が理解しやすいことを願っています – GeorgM