我正在寻找一个PyQt5教程.在没有教程的情况下首次使用Python开始GUI开发相当复杂.
到目前为止我只找到了一些PyQt4教程,并且由于Qt4到Qt5的变化,例如事实SIGNAL并且SLOT在Qt5中不再支持,所以为PyQt5提供特定的教程会很好.
有人可以提供一个如何使用PyQt5开始GUI开发的教程吗?
我想我在过去的20个小时内尽我所能,但似乎没有任何效果.我的应用程序正在运行和工作 - 就像它应该 - 我唯一的问题是我无法.app从它创建一个包.我都尝试Py2App和cx_Freeze,但他们的非正常工作.由于多平台支持,我会坚持使用后者 - 如果可能的话.
该setup.py如下所示:
import sys
from cx_Freeze import setup, Executable
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
OPTIONS = {'build_exe': {'includes': ['sip',
'PyQt5',
'PyQt5.QtCore',
'PyQt5.QtGui',
'PyQt5.QtWidgets',
'PyQt5.QtMultimediaWidgets',
'PyQt5.QtMultimedia',
'PyQt5.QtNetwork']}}
EXECUTABLES = [Executable('main.py', base=base)]
NAME = 'coublet'
VERSION = '0.5.70'
setup(name = NAME,
version = VERSION,
options = OPTIONS,
executables = EXECUTABLES)
Run Code Online (Sandbox Code Playgroud)
我有的错误信息是这样的:
objc[28404]: Class NotificationReceiver is implemented in both
/Users/.../build/coublet-0.5.70.app/Contents/MacOS/QtWidgets and
/usr/local/Cellar/qt5/5.3.1/lib/QtWidgets.framework/Versions/5/QtWidgets. One of …Run Code Online (Sandbox Code Playgroud) 我刚从PyQt4转到5,我遇到了QtGui的问题.我使用32位Windows安装程序安装,而不是我自己的构建.
当我做:
from PyQt5 import QtGui
Run Code Online (Sandbox Code Playgroud)
我明白了
class MainWindow(QtGui.QMainWindow, UI.MainUI.Ui_MainWindow):
AttributeError: 'module' object has no attribute 'QMainWindow'
Run Code Online (Sandbox Code Playgroud)
所以我试过了
from PyQt5.QtWidgets import QtGui
Run Code Online (Sandbox Code Playgroud)
结果如下:
ImportError: cannot import name QtGui
Run Code Online (Sandbox Code Playgroud)
然后我尝试根据Pyinstaller更改sys.path :ImportError:无法导入名称QtGui工作但它仍然给我相同
ImportError: cannot import name QtGui
Run Code Online (Sandbox Code Playgroud)
更新:看起来我确实导入了QtGui,因为当我进入IDLE并尝试它时,它仍然自动完成QMovie和一大堆其他属性.有什么理由QMainWindow不会在那里吗?(事实并非如此,QDialog也不重要)
我使用Python 3和PyQt5.这是我的测试PyQt5程序,重点关注最后两行:
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys
class window(QWidget):
def __init__(self,parent=None):
super().__init__(parent)
self.setWindowTitle('test')
self.resize(250,200)
app=QApplication(sys.argv)
w=window()
w.show()
sys.exit(app.exec())
#sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
我知道exec是Python中的语言关键字.但官方PyQt5文档 上的代码(特别是退出部分的Object Destruction).我看到这个例子显示使用app.exec()它让我感到困惑.
当我在我的机器上测试它时.我发现与我的目的没有任何明显的区别.有和没有_产生相同的输出没有时间差.
我的问题是:
app.exec()吗?喜欢与Python的内部冲突exec?我怀疑是因为两人exec正在执行某些事情.pip3 install PyQt5
Collecting PyQt5
Using cached https://files.pythonhosted.org/packages/3a/fb/eb51731f2dc7c22d8e1a63ba88fb702727b324c6352183a32f27f73b8116/PyQt5-5.14.1.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python3.6/tokenize.py", line 452, in open
buffer = _builtin_open(filename, 'rb')
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pip-build-b2zw891b/PyQt5/setup.py'
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-b2zw891b/PyQt5/
Run Code Online (Sandbox Code Playgroud)
然后我从https://www.riverbankcomputing.com/software/pyqt/download5下载了 zip 文件夹并运行:
python3 configure.py --qmake /home/oo/Qt/5.14.0/gcc_64/bin/qmake
make
sudo make install
Run Code Online (Sandbox Code Playgroud)
成功的
>>> import PyQt5
>>> import PyQt5.QtCore
Traceback (most recent …Run Code Online (Sandbox Code Playgroud) 当我尝试使用该命令在Windows上安装PyQt5时
python configure.py
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Run Code Online (Sandbox Code Playgroud)Error: Make sure you have a working Qt qmake on your PATH.
我从PyQt5下载了pyQt5 .
我该如何安装PyQt5?
更新:
我Qt 5.0.2 for Windows 64-bit (VS 2012, 500 MB)从Qt下载页面安装,现在我有这个错误:
Run Code Online (Sandbox Code Playgroud)Querying qmake about your Qt installation... Determining the details of your Qt installation... Error: Failed to determine the detail of your Qt installation. Try again using the --verbose flag to see more detail about the problem.
当我执行命令时python configure.py --verbose:
Run Code Online (Sandbox Code Playgroud)Querying qmake about your …
感觉真的很蠢,现在,但标题说明了一切:
你如何启动QtDesigner?
我安装了PyQt5via pip,我相信已经确定了它已经安装的目录
C:\Users\%username%\AppData\Local\Programs\Python\Python36\Lib\site-packages\PyQt5
Run Code Online (Sandbox Code Playgroud)
怎么办?有很多.pyd文件,一些.dll也是,但没有可执行文件(好吧,除了QtWebEngineProcess.exein ...\site-packages\PyQt5\Qt\bin,但这听起来不像我正在寻找的.
以下是我的python,qt和sip版本
root@thura:~# python -V
Python 2.7.3
root@thura:~# qmake --version
QMake version 3.0
Using Qt version 5.0.2 in /usr/lib/i386-linux-gnu
root@thura:~# sip -V
4.15.3
Run Code Online (Sandbox Code Playgroud)
我试图通过以下操作来导入PyQt5 这
from PyQt5.QtWidgets import QtGui, QtCore
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
ImportError:没有名为PyQt5.QtWidgets的模块
我该如何解决这个错误.
更新=====================
当我尝试PyQt4时,我得到了以下错误.
从PyQt4.QtCore导入pyqtSlot作为Slot RuntimeError:sip模块实现API v10.0到v10.1但PyQt4.QtCore模块需要API v8.1
更新2013-12-20 ======================================
1)从这里下载sip-4.15.3.tar.gz
2)提取sip-4.15.3.tar.gz
3)将sip-4.15.3复制到/ home/thura
4)输入"cd /home/thura/sip-4.15.3"
5)键入"python configure.py",按回车键,按照说明操作(输入yes并按回车键)
6)输入"make",按回车键入"make install",按回车键
7)从这里下载PyQt-gpl-5.1.1.tar.gz
8)提取PyQt-gpl-5.1.1.tar.gz
9)将PyQt-gpl-5.1.1文件夹复制到/ home/thura文件夹.
10)输入"cd /home/thura/PyQt-gpl-5.1.1"
11)键入"python configure.py",按回车键,按照说明操作(输入yes并按回车键)
12)输入"make",按回车键入"make install",按回车键
更新2013-12-20 =====================
再次重做之后.我收到以下错误
make[2]: Entering directory `/home/thura/PyQt/qpy/QtDBus'
make[2]: Nothing to be done for `install'.
make[2]: Leaving …Run Code Online (Sandbox Code Playgroud) 我制作了一个包含 5-6 个 .py 文件的小型 PyQt 应用程序。现在我想将它们构建并编译成一个主文件,这意味着它必须从一个主窗口 exe 中运行。
我的 .py 文件已成功相互连接。我已经使用 pyinstaller 来制作可执行文件,但问题是我将每个 .py 文件构建到了自己的 .exe 文件中。但我想制作一个 .exe 文件,通过它可以使用所有 .py 文件。
如何将所有 .py 文件构建为单个 .exe 文件?
我正在阅读有关PyQt5的一些文档,以提出一个简单的信号槽机制.由于设计考虑,我已经停止了.
请考虑以下代码:
import sys
from PyQt5.QtCore import (Qt, pyqtSignal)
from PyQt5.QtWidgets import (QWidget, QLCDNumber, QSlider,
QVBoxLayout, QApplication)
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def printLabel(self, str):
print(str)
def logLabel(self, str):
'''log to a file'''
pass
def initUI(self):
lcd = QLCDNumber(self)
sld = QSlider(Qt.Horizontal, self)
vbox = QVBoxLayout()
vbox.addWidget(lcd)
vbox.addWidget(sld)
self.setLayout(vbox)
#redundant connections
sld.valueChanged.connect(lcd.display)
sld.valueChanged.connect(self.printLabel)
sld.valueChanged.connect(self.logLabel)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Signal & slot')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
要跟踪对滑块所做的更改,我只需打印并记录所做的更改.我不喜欢的代码是我需要调用sld.valueChanged插槽三次将相同的信息发送到3个不同的插槽.
是否可以创建自己的pyqtSignal,将整数发送到单个槽函数.反过来,插槽功能会发出需要进行的更改吗? …
pyqt5 ×10
python ×9
pyqt ×4
qt ×4
python-3.x ×3
bundle ×1
cx-freeze ×1
macos ×1
nmake ×1
pyinstaller ×1
pyqtchart ×1
qt-designer ×1
qt5 ×1
signals ×1
windows ×1