[問題] 使用PyQt Designer UI彈出dialog失敗(已解決)

作者: ginnyhuang (ginnyhuang)   2014-03-20 18:52:25
經驗:
第一次使用PyQt,主要是想寫一個input視窗,想到很久以前初學python時曾很簡單地跳出
視窗並顯示圖片(太久遠忘記怎麼做了...),因此才選用python作為視窗語言,希望能很快
做出一個input介面。
沒想到不是這麼回事Orz,輾轉多日才使用了pyqt及其內的designer,但對於視窗調用還是
不甚熟悉。手邊有"Rapid GUI Programming with Python and Qt",但他對如何調用使用
designer產生的介面並未詳加說明,且他使用的版本是PyQt4。
環境:
使用python 3.3,pyqt 5.2 (for python 3.3)
程式碼:
主視窗:https://gist.github.com/ginnyhuang/9660481
跳出的dialog:https://gist.github.com/ginnyhuang/9660541#file-dialog
做法:
在class MainWindow使用self.ui = Ui_MainWindow()來調用主視窗的UI
及設定監聽該視窗按鈕,如果按下該按鈕則跳出一個dialog
在class Set_Location_Method使用self.ui = Ui_Dialog()調用dialog的UI
設定OK按鈕→accept與cancel按鈕→reject (accept method覆寫)
被調用的UI皆未改動,使用時執行class MainWindow那個檔案
問題:
主要有兩個問題。
1. 主視窗顯示
class MainWindow(QDialog),這樣設定時會順利跑出視窗
但若設定class MainWindow(QMainWindow)跑出來的視窗沒有元件: http://ppt.cc/GktX
在designer中是create main window,執行部分應該也沒問題?
所以不太懂為何無法使用QMainWindow,但用QDialog能順利執行?
2.跳出dialog
點選按鈕後跳出來的是: http://ppt.cc/aWTX
完全沒有頭緒Orz
試過如果使用的是內建dialog比如QMessageBox是可以正常顯示的。
如果是直接打開這個UI(將mainWindow調用UI的function改為dialog的)也能出來
最後想問大家有沒有推薦的PyQt5 tutorial,本來想看官方的method但有些他連描述都
沒有Orz
感謝各位耐心看完,還望不吝指教:)
作者: KSJ (阿真)   2014-03-20 20:59:00
class 也要繼承那個Ui_ooxx~
作者: dododavid006 (朔雪)   2014-03-20 21:36:00
不用吧 我最近才用過啊不好意思 如果是MainWindow我就不太確定了
作者: legnaleurc (CA)   2014-03-20 22:57:00
你的 .ui 檔的內容是?PyQt 的文件直接看 C++ 版的就好了,API 都一樣__init__, 不是 _init_

Links booklink

Contact Us: admin [ a t ] ucptt.com