我剛開始進入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。我不明白。如果有人能解釋這對我來說意味着這個世界。提前致謝。
編輯: 感謝大家現在工作得很好,把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