我正在嘗試在按下 fieldE 按鈕時創建新窗口,但它沒有發生。Mapeditor() 類正在工作,所以我認為當我調用 fieldE.clicked.connection 函數時問題是一致的。有小費嗎?def startGpressed(name): print(name)def fieldeditorOPEN(): fieldScreen = Mapeditor()def main(): app = QApplication(sys.argv) ex = App() buttons = ex.initUI() startG = buttons[0] fieldE = buttons[1] startG.clicked.connect(lambda:(startGpressed("Game starting"))) fieldE.clicked.connect(partial(fieldeditorOPEN)) startG.show() fieldE.show() sys.exit(app.exec_())main()
1 回答

慕碼人8056858
TA貢獻1803條經驗 獲得超6個贊
函數中創建的變量會在函數執行完畢后被清除,因此即使顯示窗口,也會立即關閉并清除。所以解決辦法是延長它的生命周期,使其可以創建為全局變量:
fieldScreen = None
def fieldeditorOPEN():
global fieldScreen
fieldScreen = Mapeditor()
fieldScreen.show()
另一種選擇是在 main 中創建 Mapeditor 并單擊顯示它:
# ...
fieldScreen = Mapeditor()
fieldE.clicked.connect(fieldScreen.show)
# ...
添加回答
舉報
0/150
提交
取消