私はPythonを使い始めました。オブジェクト作成の仕組みについて全く混乱しています。私はGTKとのユーザーインターフェイスを作成しようとしています。私は窓を定義しなかったにもかかわらず、 が定義されていない名「窓」:Python Gtk 3のウィンドウが定義されていません、クラスインスタンス化の混乱
from gi.repository import Gtk
def button_clicked(self, button):
self.button_label = button.get_label()
if self.button_label == "Login":
window.quit()
window2.start()
class LoginWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="AMOK Cloud")
self.connect("delete-event", Gtk.main_quit)
self.set_position(position = Gtk.WindowPosition.CENTER)
# Button
self.loginbutton = Gtk.Button(label="Login")
self.loginbutton.connect("clicked", button_clicked(self, self.loginbutton))
self.add(self.loginbutton)
self.show_all()
Gtk.main()
def quit(self):
self.close()
Gtk.main_quit()
class MainWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="AMOK Cloud")
self.connect("delete-event", Gtk.main_quit)
self.set_position(position=Gtk.WindowPosition.CENTER)
def start(self):
self.show_all()
Gtk.main()
window = LoginWindow()
window2 = MainWindow()
エラーがNameErrorとして起動します:ここでの問題私が午前の例があります。わかりません。もし誰かが私に世界を意味すると説明することができます。前もって感謝します。
EDIT: Gtk.main()を両方のクラスから取り除き、LoginWindow()クラスのbutton_clickedメソッドを追加しました。これは今のところ魅力的です。私は開いたウィンドウごとにGtk.main()が必要であると仮定しました。
私はGTK3のPythonのものを持っていません(まだGTK2 +を使用しています)ので、私は答えを書かないでしょう。しかし、 'Gtk.main()'も 'MainWindow.start'から削除する必要があります。また、 'self.loginbutton.connect'へのコールバックは修正する必要があります:現在、' button_clicked'呼び出しによって返された値には 'None'が割り当てられています。そして、私は 'button_clicked'が本当に' LoginWindow'のメソッドであるべきだと思います。 –
@ PM2Ring:実際、GTK3もありません;)あなたの提案をありがとうございます。私は編集しました。 – zondo