作者ginnyhuang (ginnyhuang)
看板Python
标题[问题] 使用PyQt Designer UI弹出dialog失败(已解决)
时间Thu Mar 20 18:52:25 2014
经验:
第一次使用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
感谢各位耐心看完,还望不吝指教:)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.138.179.43
1F:→ KSJ:class 也要继承那个Ui_ooxx~ 03/20 20:59
是指改成 class MainWindow(QMainWindow, Ui_MainWindow): 吗?结果一样QQ
2F:→ dododavid006:不用吧 我最近才用过啊 03/20 21:36
3F:→ dododavid006:不好意思 如果是MainWindow我就不太确定了 03/20 21:38
4F:→ legnaleurc:你的 .ui 档的内容是? 03/20 22:57
感谢突破盲点!原来我之前执行时因为某几行错误让他注解才能跑,後来改了使用UI的方式
却忘了被注解的地方~
我本来想回答:"用PyQt5的pyuic5将designer的.ui转成.py没有改直接使用"
结果在复制程式码时发现原来我有稍微整理Ui_MainWindow
然後就看到被注解掉的MainWindow.setCentralWidget(self.centralwidget)...XD
现在只剩下dialog弹出错误的问题了~下面是UI code,因为元件挺多稍嫌杂乱,请见谅
主视窗UI:
https://gist.github.com/ginnyhuang/9667790
dialog UI:
https://gist.github.com/ginnyhuang/9667817
5F:→ legnaleurc:PyQt 的文件直接看 C++ 版的就好了,API 都一样 03/20 22:58
6F:→ legnaleurc:__init__, 不是 _init_ 03/21 00:52
啊,真的!我果然还不是很熟悉python(捂脸)。问题解决了,非常感谢~~:D
※ 编辑: ginnyhuang 来自: 1.34.172.80 (03/21 01:10)