[英]Some questions about switches in python
這是我在StackOverflow的第一個問題,所以如果沒有一些信息或者我錯過了一些重要的信息,請耐心等待,但無論如何我會盡我所能:)
最近我開始用Python2.7編寫代碼,所以我不太擅長它。 在玩PyGtk,PyGObject,Glade等時,我發現了一些特別關於開關的東西(沒有嘗試過任何其他小部件,所以我不知道它是否發生在其他地方。很可能它沒有,我希望... )
我用一個“窗口”和一個使用Glade的“開關”創建了一個非常基本的GUI
我的目標是在用戶嘗試激活它之后停用開關,如果之前提出了一些例外,例如:
我做了一些代碼,過了一會兒,我注意到這段代碼創建了一個類似循環的塊,之后阻止了GUI的窗口:
builder = Gtk.Builder()
window1 = builder.get_object('window')
switchie = builder.get_object('switchie')
switchie.set_active(False)
def Hi(switch, active):
print switchie.get_active()
switchie.set_active(not switchie.get_active())
switchie.connect("""notify::active""", Hi)
window1.set_position(Gtk.WindowPosition.CENTER)
window1.connect("delete-event", Gtk.main_quit)
window1.show_all()
如果我是對的,只要“switchie”被點擊,“switchie.connect”就會將“switchie”對象與“Hi”func鏈接起來。
但如果我執行此操作並嘗試打開開關,GUI將掛起。 我試圖通過腳本和命令行執行此操作並添加“打印開關狀態”,從而產生無限循環(True&False)
我嘗試了許多其他功能,但他們都無法解決這個問題。 事實上,這是我所有其他功能的“本質”。
為什么會這樣?
循環在哪里?
我錯了嗎?
感謝幫助!
(如果你需要查看其余的錯誤功能,請問他們,但我不認為他們會幫助......)
你想像這樣連接開關:
switchie.connect("""activate""", Hi)
這只會在每次點擊時被調用一次 。 你所做的是在它發生變化之后連接到信號,所以它不斷變化,永遠不會追趕。 你也想改變
def Hi(switch, active):
至
def Hi(switch, active = None):
用於鍵盤支持。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.