我对Qt和python有点新鲜.我创建了一个简单的GUI,它包含垂直滑块和QLCDNumber小部件.我通过使用函数以某种方式访问滑块的值.但现在我想在QLCDNumber显示器中显示新生成的值.我该怎么做?有没有办法在显示器中显示新值(ipp)QLCDNumber?我的代码如下:
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(733, 498)
self.centralWidget = QtGui.QWidget(MainWindow)
self.centralWidget.setObjectName(_fromUtf8("centralWidget"))
self.verticalSlider = QtGui.QSlider(self.centralWidget)
self.verticalSlider.setGeometry(QtCore.QRect(110, 80, 20, 331))
self.verticalSlider.setOrientation(QtCore.Qt.Vertical)
self.verticalSlider.setObjectName(_fromUtf8("verticalSlider"))
self.lcdNumber = QtGui.QLCDNumber(self.centralWidget)
self.lcdNumber.setGeometry(QtCore.QRect(320, 180, 191, 81))
self.lcdNumber.setObjectName(_fromUtf8("lcdNumber"))
MainWindow.setCentralWidget(self.centralWidget)
self.menuBar = QtGui.QMenuBar(MainWindow)
self.menuBar.setGeometry(QtCore.QRect(0, 0, 733, 21))
self.menuBar.setObjectName(_fromUtf8("menuBar"))
MainWindow.setMenuBar(self.menuBar)
self.mainToolBar = QtGui.QToolBar(MainWindow)
self.mainToolBar.setObjectName(_fromUtf8("mainToolBar"))
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
self.statusBar = QtGui.QStatusBar(MainWindow)
self.statusBar.setObjectName(_fromUtf8("statusBar"))
MainWindow.setStatusBar(self.statusBar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
QtCore.QObject.connect(self.verticalSlider, QtCore.SIGNAL(_fromUtf8("valueChanged(int)")), self.abc) …Run Code Online (Sandbox Code Playgroud) 我使用Qt Designer创建了一个自定义小部件.通过使用pyuic,我将.ui文件转换为.py文件.我的意图很简单:我需要找出选择了哪个单选按钮.
这是Designer转换的python脚本ui_persistence_size.py:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'persistance_size2.ui'
#
# Created: Fri Dec 19 00:57:01 2014
# by: PyQt4 UI code generator 4.10.4
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig): …Run Code Online (Sandbox Code Playgroud) 我正在使用 PyQt4。我可以最小化和最大化窗口,但无法通过单击任务栏图标来最小化它。
该程序由py2exe编译并在任务栏中显示为“python.exe”。如何捕捉点击事件?
我正在使用 QWebView。该事件QWebView.event(e)没有帮助。
下一个代码提供窗口状态更改的事件:
...
class LauncherView(QWebView, object):
def __init__(self, QWidget_parent=None):
super(LauncherView, self).__init__(QWidget_parent)
self.setWindowFlags(Qt.FramelessWindowHint)
self.setContextMenuPolicy(Qt.CustomContextMenu)
self.resize(801, 601)
...
def event(self, e):
if e.type() == e.WindowStateChange and self.windowState() & QtCore.Qt.WindowMinimized: # Event if I click the minimize button
self.showMinimized()
elif e.type() == e.WindowStateChange and self.windowState() == QtCore.Qt.WindowNoState: # Event if I restore the window by clicking on taskbar
self.showMaximized() # or showNormal
elif ???????: # What event I must catch if I want to minimize window by …Run Code Online (Sandbox Code Playgroud) Qt(以及 PyQt)允许您将 QSS(Qt 样式表)文件添加到 QApplication,并为您创建的每个单独的小部件添加一个。您可以使用以下 Python/PyQt 代码设置应用程序的样式表:
# app is a QApplication and styleSheet is a str.
app.setStyleSheet(styleSheet)
Run Code Online (Sandbox Code Playgroud)
然而,该setStyleSheet()函数只允许您为 QApplication 指定一个 QSS 文件。这与 CSS 不同,CSS 允许将任意数量的样式表应用于单个网页。
我正在 PyQt 中编写一个程序,它将允许用户自定义主题。该程序有一个主要的 QSS 文件,主题应该能够包含附加的 QSS,这些附加的 QSS 会级联在其之上。然而,由于 Qt 的明显限制,这似乎不可能。
我想到的一个想法是,我可以将程序的默认样式表分配给 QApplication,并将当前主题的样式表分配给 QMainWindow。不过,这似乎是一种解决方法,而不是一个好主意。
有没有像这样添加两个 Qt 样式表的好方法?
我正在尝试构建一个 GUI,它将:
QTabwidget(很多在Qt Designer中预定义的.ui)我打算制作一个QTabwidget,比如 10 个标签,但根据加载的参数,只有一个应该是可见的。启用某些选项卡不是一个选项,因为它需要很多空间并且禁用的选项卡是灰色的。我不想看到禁用的标签。
删除选项卡可能是一个选项,但索引与特定选项卡无关,因此我必须处理索引的变化。此外,如果用户加载具有不同参数的另一个文件,则应添加一个好的选项卡并删除当前的选项卡。
我的问题是:
RemoveTab,如何在选项卡上使用指针而不是索引?我使用 PyQt4
下面的代码获取一个值,如果值是basestring,则返回它.如果该值不是basestring,则将其转换为字符串,但如果值为None,则返回空字符串.
有更多的Pythonic方式吗?
lambda value: value if isinstance(value, basestring) else str(value) if value is not None else ""
Run Code Online (Sandbox Code Playgroud) 在Python Qt中,我将一个QListWidget信号连接到一个插槽,如下所示:
QtCore.QObject.connect(self.myList, QtCore.SIGNAL("itemClicked(QListWidgetItem *)"), self.ListEventHandler)
Run Code Online (Sandbox Code Playgroud)
我的问题是:尾随星号的作用是QListWidgetItem *什么?
我在表格视图中正确调整行大小时遇到一个小问题。我有一个垂直标题,没有水平标题。我试过:
self.Popup.table.setModel(notesTableModel(datainput))
self.Popup.table.horizontalHeader().setVisible(False)
self.Popup.table.verticalHeader().setFixedWidth(200)
for n in xrange(self.Popup.table.model().columnCount()):
self.Popup.table.setColumnWidth(n,150)
Run Code Online (Sandbox Code Playgroud)
这工作得很好,但是当我尝试时:
for n in xrange(self.Popup.table.model().rowCount()):
self.Popup.table.setRowHeight(n,100)
Run Code Online (Sandbox Code Playgroud)
或者
for n in xrange(self.Popup.table.model().rowCount()):
self.Popup.table.resizeRowToContents(n)
Run Code Online (Sandbox Code Playgroud)
即使文本超过单元格的长度,也不会调整行的大小。
如何强制行适合数据?
当我调用错误消息一(请参阅代码中的注释)时,该消息很快出现然后消失。但是,如果我调用错误消息二,它就会出现,并且只有在我单击“确定”按钮时才会消失。
如何修复它以使错误消息一像错误消息二一样工作?
try:
connection = pymysql.connect(host = 'localhost',
user = 'root',
db = 'Telephon Register',
cursorclass = pymysql.cursors.DictCursor)
cur = connection.cursor()
if number!= "":
cur.execute("SELECT Number FROM formen WHERE Telephonebook = " + self.number.text() )
result = cur.fetchone()
if len(result) == 0:
cur.execute("INSERT INTO formen VALUES(" + self.number.text())
connection.commit()
else:
print("The number " + number+ " already exists.")
else:
print("You have not typed a number!")
msg = QMessageBox() #EXCEPTION MESSAGE ONE
msg.setIcon(2)
msg.setText("Some Text")
msg.setInformativeText("Some informative text")
msg.setWindowTitle("Error")
msg.show()
connection.close() …Run Code Online (Sandbox Code Playgroud) 我已经得到了具有选项卡和树视图的代码。我希望树视图中的每一行都有一些小按钮。如何向树视图的行添加按钮?
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class tabdemo(QTabWidget):
def __init__(self, parent=None):
super(tabdemo, self).__init__(parent)
self.setGeometry(300, 300, 500, 300)
self.tab1 = QWidget()
self.tab2 = QWidget()
self.tab3 = QWidget()
self.addTab(self.tab1, "Tab 1")
self.addTab(self.tab2, "Tab 2")
self.addTab(self.tab3, "Tab 3")
self.tab1UI()
self.tab2UI()
self.tab3UI()
self.setWindowTitle("tab demo")
def tab3UI(self):
layout = QFormLayout()
layout.addRow("Name", QLineEdit())
layout.addRow("Address", QLineEdit())
self.setTabText(0, "Contact Details")
self.tab3.setLayout(layout)
def tab2UI(self):
layout = QFormLayout()
sex = QHBoxLayout()
sex.addWidget(QRadioButton("Male"))
sex.addWidget(QRadioButton("Female"))
layout.addRow(QLabel("Sex"), sex)
layout.addRow("Date of Birth", QLineEdit())
self.setTabText(1, "Personal Details")
#self.button.clicked.connect(self.handleButton)
self.tab2.setLayout(layout)
def …Run Code Online (Sandbox Code Playgroud) pyqt ×8
python ×8
pyqt4 ×3
qt ×3
pyqt5 ×2
click ×1
py2exe ×1
python-2.7 ×1
qmessagebox ×1
qt-designer ×1
qt5 ×1
qtableview ×1
qtabwidget ×1
qtreeview ×1
resize ×1
taskbar ×1