# -*- coding: utf-8 -*-
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class MainWindow(QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.setFixedWidth(200)
self.setFixedHeight(200)
stylesheet = \
".QWidget {\n" \
+ "border: 20px solid black;\n" \
+ "border-radius: 4px;\n" \
+ "background-color: rgb(255, 255, 255);\n" \
+ "}"
self.setStyleSheet(stylesheet)
if __name__ == '__main__':
app = QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
我想用样式表添加边框到自定义小部件,但样式表似乎不起作用,有什么不对吗?
可能吗?我的意思是,是的,pyqtdeploy介绍页面说:"pyqtdeploy是一个部署PyQt应用程序的工具.它支持部署到桌面平台(Linux,Windows和OS/X)和移动平台(iOS,Android和Windows RT)."
我已经安装了Qt 5.3.0 for Android及其所有先决条件(SDK,NDK等).此外,我在QtCreator中使用简单的按钮和标签制作了测试项目,用于测试部署.一切都好.下一步是尝试pyqtdeploy来制作Qt项目,非常简单.但是当我试图构建这个项目时,链接器说没有QtCore,QtWidget库.我可以认识到,我没有静态链接的PyQt库,必须为arm架构编译它们.这样对吗?但后来我意识到,python库本身也必须是arm编译的.我可以在Qt中从源代码构建这个库吗?
搜索什么也没做.如果这是真的,为什么没有人(河岸,python)没有手臂编译库?也许我很想念一些东西.在这种情况下,我有更多的全球性问题.
如何使用pyqtdeploy和Qt 5.3.0 for Android将PyQt5.3 Python 3.4应用程序部署到Android?
我正在关注Rapid GUI Programming with Python and Qt正在使用PyQt4的Mark Summerfield .我更喜欢使用PyQt5,但我的机器上都有.我正在书中进行第二次练习,内容如下:
from __future__ import division
import sys
from math import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.browser = QTextBrowser()
self.lineedit = QLineEdit("Type an expression and press Enter")
self.lineedit.selectAll()
layout = QVBoxLayout()
layout.addWidget(self.browser)
layout.addWidget(self.lineedit)
self.setLayout(layout)
self.lineedit.setFocus()
# This line fails:
self.connect(self.lineedit, SIGNAL("returnPressed()"), self.updateUi)
self.setWindowTitle("Calculate")
def updateUi(self):
try:
text = unicode(self.lineedit.text())
self.browser.append("%s = <b>%s</b>" % (text, eval(text)))
except:
self.browser.append(
"<font color=red>%s is …Run Code Online (Sandbox Code Playgroud) 如何使用PyQt5 v5.6 QWebEngineView"渲染"HTML?
我之前使用PyQt5 v5.4.1 QWebPage执行了该任务,但建议尝试使用较新的QWebEngineView.
这是实现(它通常按预期工作,但有一些站点和情况无限期挂起):
def render(source_html):
"""Fully render HTML, JavaScript and all."""
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebKitWidgets import QWebPage
class Render(QWebPage):
def __init__(self, html):
self.html = None
self.app = QApplication(sys.argv)
QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().setHtml(html)
self.app.exec_()
def _loadFinished(self, result):
self.html = self.mainFrame().toHtml()
self.app.quit()
return Render(source_html).html
import requests
sample_html = requests.get(dummy_url).text
print(render(sample_html))
Run Code Online (Sandbox Code Playgroud)
以下是我尝试使用QWebEngineView.首先,在Ubuntu上安装和设置PyQt5 v5.6:
# install PyQt5 v5.6 wheel from PyPI
pip3 install --user pyqt5
# link missing resources
ln -s ../resources/icudtl.dat ../resources/qtwebengine_resources.pak …Run Code Online (Sandbox Code Playgroud) 我有一个具有登录屏幕的脚本,如果按下取消按钮,我想完全退出应用程序.我试过3种方法:
只有1号才有效.另外两个使对话框变白,然后闪烁然后挂起,我甚至无法切换到其他应用程序.我的代码如下:
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtSql import *
from PyQt5.QtWidgets import *
import csv
import sys
from datetime import datetime, timedelta, time
import os
from ci_co_table import *
from login import *
class Ci_Co(QMainWindow):
"""Check in and check out module"""
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
class Login(QDialog):
"""User login """
def __init__(self):
QDialog.__init__(self)
self.ui = Ui_login_form()
self.ui.setupUi(self)
self.ui.buttonBox.accepted.connect(lambda: self.handle_login(servers=servers))
servers = {}
with open('servers.csv', newline='') as csvfile: …Run Code Online (Sandbox Code Playgroud) 我最近在将 pyqt 从 PyQt4 更新到 PyQt5 后开始使用 PyQt5,并注意到使用 pyqtgraph 生成的所有绘图的轴位置存在持续错误(参见附图)。x 轴不延伸穿过窗口底部,y 轴不与左下角的 x 轴连接。此外,在较大的 x 值或较小的 y 值处,轨迹不能由轴标签准确地表示。
下图是通过运行产生的:
import pyqtgraph as pg
pg.plot([0,1,2,3,4,5,6,7,8,9],[1,2,4,5,7,8,10,11,13,14])
Run Code Online (Sandbox Code Playgroud)
我在我的 Windows 10 机器上使用 anaconda 创建了一个新的 python 环境来测试这个问题。conda list qt的输出是:
pyqt 5.6.0 py35_2
pyqtgraph 0.10.0 py35_0
qt 5.6.2 vc14_5 [vc14]
Run Code Online (Sandbox Code Playgroud)
我尝试使用不同版本的 Python(3.5.3 和 3.6)并删除并重新安装所有 anaconda 发行版,但没有成功。我真的很感激任何有关这个问题的帮助。提前致谢。
编辑 1:我应该提到我是在外部显示器上运行这个程序的。我刚刚发现,如果我将绘图窗口拖动到较小的笔记本电脑显示屏上,轴就会捕捉到正确的位置。我仍然没有发现如何在外部显示器上正确显示绘图,但我怀疑它可能与 QT DPI 缩放环境变量有关。
我开发了一些在Python 3.5.4上运行良好的程序,但由于win32的一些错误让我进入Python 3.6.4,但是当我使用pyinstaller构建我的项目时,我得到:
C:\Users\User\Desktop\dist\mycommentator>mycommentator.exe
Traceback (most recent call last):
File "mycommentator.py", line 6, in <module>
File "c:\users\user\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 714, in load_module
module = loader.load_module(fullname)
ModuleNotFoundError: No module named 'PyQt5.sip'
[1532] Failed to execute script mycommentator
Run Code Online (Sandbox Code Playgroud)
我试图重新安装python,所以我安装了Python 3.6.4/Python 3.6.5,这个错误也发生在我身上.无论我在PyQt5中构建什么代码,每次都出现此错误.
我也尝试移动sip.pyd到项目文件夹,但仍然发生错误.我也尝试过pip install --upgrade sip,但没有帮助.我也尝试安装pyinstaller的开发版本,这也没有帮助.
我必须在我们公司的内部网上抓一个非常非常简单的页面,以便自动化我们的一个内部进程(将函数的输出返回成功与否).
我找到了以下示例:
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
class Render(QWebPage):
def __init__(self, url):
self.app = QApplication(sys.argv)
QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(QUrl(url))
self.app.exec_()
def _loadFinished(self, result):
self.frame = self.mainFrame()
self.app.quit()
url = 'http://sitescraper.net'
r = Render(url)
html = r.frame.toHtml()
Run Code Online (Sandbox Code Playgroud)
来自http://blog.sitescraper.net/2010/06/scraping-javascript-webpages-in-python.html,它几乎是完美的.我只需要能够提供身份验证来查看页面.
我一直在查看PyQt4的文档,我承认很多都是我的头脑.如果有人可以提供帮助,我会很感激.
编辑: 不幸的是gruszczy的方法对我不起作用.当我通过urllib2做了类似的事情时,我使用了以下代码并且它有效...
username = 'user'
password = 'pass'
req = urllib2.Request(url)
base64string = base64.encodestring('%s:%s' % (username, password))[:-1]
authheader = "Basic %s" % base64string
req.add_header("Authorization", authheader)
handle = urllib2.urlopen(req)
Run Code Online (Sandbox Code Playgroud) 我需要一个类的双重继承.我尝试了几种语法,但我不理解元类的概念.
from PyQt5.QtGui import QStandardItem
from configparser import ConfigParser
class FinalClass(ConfigParser, QStandardItem):
def __init__(self, param):
ConfigParser.__init__(self)
QStandardItem.__init__(self)
Run Code Online (Sandbox Code Playgroud) gui1.py:
Run Code Online (Sandbox Code Playgroud)import sys from PyQt5.QtWidgets import QApplication, QWidget app = QApplication(sys.argv) w = QWidget() w.resize(250,150) w.show() #sys.exit(app.exec_()) app.exec_()
IPhython日志:
runfile('F:/work/ws_python/TestProj1/gui1/gui1.py', wdir='F:/work/ws_python/TestProj1/gui1')
runfile('F:/work/ws_python/TestProj1/gui1/gui1.py', wdir='F:/work/ws_python/TestProj1/gui1')
Kernel died, restarting
Kernel died, restarting
Kernel died, restarting
Run Code Online (Sandbox Code Playgroud)
为什么内核为第二次运行而死,以及如何解决它?
(即使使用#sys.exit(app.exec_())作为最后一行,也要这样做.)
pyqt5 ×10
python ×9
pyqt ×6
qt ×2
anaconda ×1
android ×1
ipython ×1
pyinstaller ×1
pyqt4 ×1
pyqtdeploy ×1
pyqtgraph ×1
python-3.4 ×1
python-3.x ×1
qt5 ×1
sip ×1
spyder ×1
ssl ×1
web-scraping ×1
windows-10 ×1