我正在使用给定的代码,我希望用户在 QLineEdit 小部件中输入文本,按复制!按钮并查看输入的文本替换“N/A”标签。我的问题是:按照此过程,如何通过简单的鼠标单击清除 QLineEdit 小部件中输入的文本?
从我读到的(this、this和this)来看,我似乎需要在扩展 QLineEdit 的新类中重新实现 focusInEvent()。我的问题是我的 GUI 代码是使用 pyuic5 从 Qt Designer 导入的,上面引用的示例似乎没有考虑到这一点。
这是我的代码:
from PyQt5.QtWidgets import *
import sys
import QLineEdit_test
class MainWindow(QMainWindow, QLineEdit_test.Ui_QLineEdit_test):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
self.copy_button.clicked.connect(self.copy_and_print)
def copy_and_print(self):
self.label.setText(self.lineEdit.text())
def main():
app = QApplication(sys.argv)
form = MainWindow()
form.show()
app.exec_()
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
这是我转换后的 .ui 文件:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_QLineEdit_test(object):
def setupUi(self, QLineEdit_test):
QLineEdit_test.setObjectName("QLineEdit_test")
QLineEdit_test.resize(300, 200)
QLineEdit_test.setMaximumSize(QtCore.QSize(300, 200))
self.centralwidget = …Run Code Online (Sandbox Code Playgroud) 我有一个基于用户输入生成的列表。
我正在尝试在 QMessageBox 中显示此列表。但是,我无法知道这个列表的长度。名单可能很长。
因此,我需要向 QMessageBox 添加滚动条。
有趣的是,我到处寻找,但我还没有找到任何解决方案。
下面是我希望是一个“最小的、完整的和可验证的示例”,当然没有用户输入;我刚刚创建了一个列表作为示例。
我很感激任何建议。
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class W(QWidget):
def __init__(self):
super().__init__()
self.initUi()
def initUi(self):
self.btn = QPushButton('Show Message', self)
self.btn.setGeometry(10, 10, 100, 100)
self.btn.clicked.connect(self.buttonClicked)
self.lst = list(range(2000))
self.show()
def buttonClicked(self):
result = QMessageBox(self)
result.setText('%s' % self.lst)
result.exec_()
if __name__ == "__main__":
app = QApplication(sys.argv)
gui = W()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud) 我最近一直在努力在 PyQt GUI 应用程序中嵌入一个终端。几乎尝试了互联网上的所有搜索,但似乎没有任何帮助。
我有一个 QTabWidget,我只需要一个选项卡就有一个终端。
根本不可能这样做吗?
是不是有什么样QTabWidget.Tab2.show(terminal-app)和默认的终端被显示在TAB2和像每一个功能ls,ifconfig,cd等工作正常?
PS - 我已经尝试过这些,但没有成功。 在 PyQt5 中嵌入终端
(此处将代码从 PyQt4 转换为 PyQt5,但这不能满足我的需求)如何使用嵌入在 PyQt GUI 中的终端
TIA
我编写了一个程序来从串行发送和接收数据,但是我有一个问题,我想创建一个函数“connect()”或一个类,当我按下一个按钮时,该函数被执行,但是如果我创建“MainWindow”类中的这个函数,“TestThread”类中的变量“ser”未初始化,你能帮帮我吗?
import sys
import serial
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtCore import QThread, pyqtSignal
from PyQt5.uic import loadUi
ser = serial.Serial('/dev/tty.usbmodem14201', 9600, timeout=1)
class TestThread(QThread):
serialUpdate = pyqtSignal(str)
def run(self):
while ser.is_open:
QThread.sleep(1)
value = ser.readline().decode('ascii')
self.serialUpdate.emit(value)
ser.flush()
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
loadUi('/Users/bogdanvesa/P2A_GUI/mainwindow.ui', self)
self.thread = TestThread(self)
self.thread.serialUpdate.connect(self.handleSerialUpdate)
self.connect_btn.clicked.connect(self.connectSer)
self.lcd_EBtn.clicked.connect(self.startThread)
def startThread(self):
self.thread.start()
def handleSerialUpdate(self, value):
print(value)
self.lcd_lineEdit.setText(value)
def main():
app = QApplication(sys.argv)
form = MainWindow()
form.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud) 要让 PyQt5 和 Qt Designer 与 PyCharm 配合得很好,有很多小挑战,但是在完成所有小步骤之后,我不禁怀疑我是否错过了显而易见的事情。
集成 PyCharm 和 Qt Designer 的最直接方法是什么?
到目前为止我做了什么:
Settings > Tools > External tools$FilePath$和工作目录为$Projectpath$.ui项目资源管理器中的文件并从那里启动 Qt Designerpyuic5使用正确的参数运行以生成.py我的匹配项.ui我正在寻找的答案:
虽然 Qt 提供了 QGraphicsDropShadowEffect,但没有可用的“ Neumorphism ”效果:
在 css 中有一个box-shadow属性(上图中就是这样做的),它可以有多种颜色,但 Qt 缺乏对该属性的支持,并且一次应用多个图形效果是不可能的。
这能做到吗?
让这个小片段:
import sys
from PyQt5 import QtWidgets
from PyQt5 import QtCore
from PyQt5 import QtGui
from PyQt5.QtWidgets import QMenu
from PyQt5.QtGui import QKeySequence
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QCursor
from PyQt5.QtWidgets import QGraphicsObject
from PyQt5.QtCore import QRectF
from PyQt5.QtGui import QBrush
from PyQt5.QtCore import QPoint
from PyQt5.QtGui import QLinearGradient
from PyQt5.QtGui import QColor
from PyQt5.QtGui import QPen
from PyQt5.QtGui import QPainter
from PyQt5.QtWidgets import QGraphicsTextItem
from PyQt5.QtWidgets import QGraphicsItem
def create_action(parent, text, slot=None,
shortcut=None, shortcuts=None, shortcut_context=None,
icon=None, tooltip=None, …Run Code Online (Sandbox Code Playgroud) 我是PyQt5的新手,我找不到任何有关如何在加载的图像上绘制QPainter的答案(QPixmap("myPic.png")).我尝试在paintEvent方法中执行它,但它不起作用.如果我想在下面的片段中加载图像的顶部画一条线,我该怎么做呢?
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class Example(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(30, 30, 500, 300)
self.initUI()
def initUI(self):
self.pixmap = QPixmap("myPic.png")
lbl = QLabel(self)
lbl.setPixmap(self.pixmap)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud) 如上所述实际上,我有一个类似的问题在这里更新蟒蛇,pyistaller,pyqt5,pyqt5工具后.之前,我得到了想要的"Windows Vista风格"不app.setStyle('windowsvista'),当我运行编译独立的可执行文件.
现在,我获得了Windows "经典风格".如果我在PyCharm中启动应用程序,它将使用所需的"Windows Vista风格".
目前安装在Win7 64bit上:
Python:3.6.4
PyInstaller:3.3.1
PyQt5:5.10
pyqt5-tools:5.9.0.1.2(更新到5.9.1.1不起作用)
有谁知道为什么PyInstaller忽略了这种风格?
我QMainWindow用菜单栏和4 创建了一个dockable widgets.第一个dockwidget内容multipletabs,第二个是Qpainter widget,第三个是Matlabplot第四个pdf report.
当我运行代码时,如下所示.
我希望如下.
我想在任何屏幕上运行时自动将屏幕划分为四个小部件,并且我希望有标签来调整其内容的大小.
或者你有更好的想法有这样的小部件,欢迎你来.
更新代码
Qdockwidget的大小调整带来了这篇文章.似乎Qt Qdockwidget调整大小已经成为很久以前的问题了.我觉得用Qdockwidget编写我的Qmainwindow非常困难,它可以根据其内容适合并调整大小,换句话说就是子小部件.根据Qt文档,Qdockwidget调整并尊重子窗口小部件的大小.直接问题,我的主窗口有4个qdockwidgets,我想根据内容调整它们.
到目前为止我尝试过和使用过的东西.我使用了以下尺寸功能.
self.sizeHint, self.minimumSize(), self.maximumSize() and self.setFixedSize(self.sizeHint()).
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码修复第一个Qdockwidget中的内容大小.
self.setFixedSize(self.sizeHint())
Run Code Online (Sandbox Code Playgroud)
上面的代码是在子窗口小部件中编写的Class widgets
但是,尽管需要运行和生成以下代码,但这还不够.
self.first.setMinimumSize(self.first.sizeHint())
self.grid.setMinimumSize(self.grid.sizeHint())
self.third.setMinimumSize(self.third.sizeHint())
self.adjustSize()
self.first.setMinimumSize(self.first.minimumSizeHint())
self.grid.setMinimumSize(self.grid.minimumSizeHint())
self.third.setMinimumSize(self.third.minimumSizeHint())
Run Code Online (Sandbox Code Playgroud)
注意到仍然我的dockwindow不会根据子窗口小部件调整大小.Dockwidget扩展和增加.有人可能会问,Qdockwidgets可以安排和控制resizeDocks().使用并尝试了此代码行,但仍未获得所需的行为.
我一直在环顾四周,可以找到一些相关的问题.
C++以编程方式调整停靠的Qt QDockWidget的大小?
在调整大小时强制QDockWidget的行为类似于中央小部件
那些问题并没有解决我的问题.
可视化我的代码启动
1-代码运行并在屏幕上显示.
2-首次运行软件需要和想要显示.
3-当tabwidgets之间的用户选项卡想要调整其内容时,如下图所示.
4-代码如下.
import sys, os
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget,
QDesktopWidget, QApplication, QAction, QFileDialog,QColorDialog
from PyQt5.QtWidgets import …Run Code Online (Sandbox Code Playgroud) pyqt5 ×10
python ×8
pyqt ×6
python-3.x ×5
qt-designer ×2
pycharm ×1
pyinstaller ×1
pyqt4 ×1
pyserial ×1
qdockwidget ×1
qlabel ×1
qmainwindow ×1
qmessagebox ×1
qpixmap ×1
qtabwidget ×1