我想要悬停.我看了一个例子然后编写了一个脚本,它将在我制作程序时使用.我面临一个问题,只有当你将鼠标放在按钮的左上角时才会发生悬停.我希望它会发生在所有按钮上,如果我移动光标按钮然后它应该改变.
这是我的代码:
from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import pyqtSignal
import os,sys
class HoverButton(QtGui.QToolButton):
def enterEvent(self,event):
print("Enter")
button.setStyleSheet("background-color:#45b545;")
def leaveEvent(self,event):
button.setStyleSheet("background-color:yellow;")
print("Leave")
app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()
button = QtGui.QToolButton(widget)
button.setMouseTracking(True)
buttonss = HoverButton(button)
button.setIconSize(QtCore.QSize(200,200))
widget.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PyQt4.QtWebKit从我的网站上的选项列表中自动选择生日,但我在这方面遇到了麻烦.
当我想选择一个单选按钮时,我这样做:
doc = webview.page().mainFrame().documentElement()
g = doc.findFirst("input[id=gender]")
g.setAttribute("checked", "true")
Run Code Online (Sandbox Code Playgroud)
或设置一些文字输入:
doc = webview.page().mainFrame().documentElement()
s = doc.findFirst("input[id=say_something]")
s.setAttribute("value", "Say Hello To My Little Friends")
Run Code Online (Sandbox Code Playgroud)
但是如何从此选项列表中选择一个月?
<select tabindex="11" name="birthday_m">
<option value="">---</option>
<option value="1">JAN</option>
<option value="2">FEB</option>
<option value="3">MAR</option>
</select>
Run Code Online (Sandbox Code Playgroud) 我使用Qt设计器创建了一个主窗口,其中包含一个tabwidget。我的问题是,当窗口最大化时,tabwidget仍保持其原始大小-因此在其右侧留有许多灰色空间。
我希望主窗口始终处于最大化状态,那么如何调整Tabwidget的大小以占据更多空间?我可以在以下代码中添加些什么来实现此目的?
self.tabWidget = QtGui.QTabWidget(self.centralwidget)
self.tabWidget.setEnabled(True)
self.tabWidget.setGeometry(QtCore.QRect(20, 40, 601, 501))
self.tabWidget.setTabPosition(QtGui.QTabWidget.North)
self.tabWidget.setObjectName(_fromUtf8("tabWidget"))
Run Code Online (Sandbox Code Playgroud) 我试图在 python 中运行一个程序,打开一个程序并从它的标准输出中读取。当我运行程序代码时,我收到了一个分段错误错误,但是当我将代码放在函数 Myfunc 中时,它可以完美地工作!我不明白发生了什么:这是我的代码:
class Workspace(QMainWindow, Ui_MainWindow):
""" This class is for managing the whole GUI `Workspace'.
Currently a Workspace is similar to a MainWindow
"""
def __init__(self):
#p= subprocess.Popen(["java -Xmx256m -jar bin/HelloWorld.jar"],cwd=r'/home/karen/sphinx4-1.0beta5-src/sphinx4-1.0beta5/', shell=True, stdout=subprocess.PIPE, bufsize= 4024)
try:
from Queue import Queue, Empty
except ImportError:
while True:
#from queue import Queue, Empty # python 3.x
print "error"
ON_POSIX = 'posix' in sys.builtin_module_names
def enqueue_output(out, queue):
for line in iter(out.readline, b''):
queue.put(line)
out.close()
p= Popen(["java -Xmx256m -jar bin/HelloWorld.jar"],cwd=r'/home/karen/sphinx4-1.0beta5-src/sphinx4-1.0beta5/',stdout=PIPE, shell=True, bufsize= …Run Code Online (Sandbox Code Playgroud) 我目前正在使用 PyQt4 和qrcode4.0.4。
from PyQt4 import QtGui, QtCore
from PIL.ImageQt import ImageQt
import qrcode
class QRLabel(QtGui.QLabel):
def __init__(self, text=""):
super(QRLabel, self).__init__()
self.setCode(text)
def setCode(self, text=""):
self.text = text
qrImg = qrcode.make(text)
imgQt = ImageQt(qrImg.convert("RGB")) # keep a reference!
pixm = QtGui.QPixmap.fromImage(imgQt)
self.setPixmap(pixm.scaled(self.size(),QtCore.Qt.KeepAspectRatio))
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,在屏幕上显示图像之前需要克服几个障碍。QR 代码以 RGBA PIL 图像开始,转换为 RGB,然后转换为 PIL ImageQt 对象,然后转换为 QPixmap,然后将其放置在具有缩放修复的 QLabel 上。
如果您没有显式存储 imgQt 引用,则在加载小部件时会得到垃圾。
我的问题:我可以做些什么来改善这一点,因为似乎涉及很多转换。
我们正在使用PyQt和Qt Designer制作GUI.现在我们需要放置在QLabel中的图像(像素图)在调整窗口大小时很好地保持比例.
我一直在阅读其他问题/答案,但他们都使用扩展课程.由于我们在UI中不断进行更改,并且使用Qt Creator创建,因此会自动生成.ui和(相应的).py文件,因此,如果我没有错,使用类解决方案不是一个好的选择.我们因为每次更新ui时都应该手动更改类的名称.
是否有任何选项可以自动调整QLAbel中的像素图,保持比率并避免使用扩展的clases?
谢谢.
我开发了一个使用 qscintilla 作为文本编辑器的应用程序。我还实现了自定义词法分析器来突出语言特定的关键字。到目前为止,突出显示关键字的样式在我的应用程序中是硬编码的,并且在 Windows/Linux(Ubuntu)/Mac 上的默认主题中看起来很不错。
当用户选择深色主题(在 Linux 上)时会出现问题。根据 QScintilla 版本,编辑器的某些部分确实反映了当前的主题颜色,而其他部分则没有。此外,我的自定义样式在深灰色背景上呈现深蓝色字母。
我正在寻找一些 Qt 类,这将允许我访问当前系统主题。我不想为我的应用程序小部件定义样式。我想知道什么是系统默认的非比例字体,它的大小、颜色是什么……如果我知道使用了深色方案,我会选择互补色来突出显示关键字。
我检查了 QStyle、QPlatformTheme 和其他 qt 类的文档,在我看来,它们更多地用于定义新样式,然后用于描述当前样式。
我正在开发一个使用 PyQt4 记忆文本的应用程序。我想在气泡中显示所有单词,以便您查看单词的长度。但是,当我的 中包含所有气泡时QScrollArea,它们将一个排列在另一个下方。我想让它们并排对齐,但使用自动换行。
我使用QLabel带有圆形边框的气泡来工作。但是现在我有了QLabel's.py 中的单词,PyQt 不再将它们视为单词,而是将它们视为小部件。所以 PyQt 把一个小部件放在另一个小部件下面。我希望小部件并排对齐,直到它们到达行尾,然后它们应该环绕到下一行 - 这意味着它们QLabel's应该像文本文档中的单词一样。
到目前为止,这是我的代码:
f = open(r'myFile.txt')
class Bubble(QtGui.QLabel):
def __init__(self, text):
super(Bubble, self).__init__(text)
self.word = text
self.setContentsMargins(5, 5, 5, 5)
def paintEvent(self, e):
p = QtGui.QPainter(self)
p.setRenderHint(QtGui.QPainter.Antialiasing,True)
p.drawRoundedRect(0,0,self.width()-1,self.height()-1,5,5)
super(Bubble, self).paintEvent(e)
class MainWindow(QtGui.QMainWindow):
def __init__(self, text, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.setupUi(self)
self.MainArea = QtGui.QScrollArea
self.widget = QtGui.QWidget()
vbox = QtGui.QVBoxLayout()
self.words = []
for t in re.findall(r'\b\w+\b', text):
label = Bubble(t)
label.setFont(QtGui.QFont('SblHebrew', 18))
label.setFixedWidth(label.sizeHint().width())
self.words.append(label) …Run Code Online (Sandbox Code Playgroud) 想要隐藏“*”键入的密码。但是密码显示为原始文本...
class Form(QDialog):
def __init__(self, parent = None):
super(Form,self).__init__(parent)
self.usernamelabel = QLabel("Username : ")
self.passwordlabel = QLabel("Password : ")
self.username = QLineEdit()
self.password = QLineEdit()
self.okbutton = QPushButton("Login")
self.username.setPlaceholderText("Enter Username Here")
self.password.setPlaceholderText("Enter Password Here")
layout = QGridLayout()
layout.addWidget(self.usernamelabel,0,0)
layout.addWidget(self.passwordlabel,1,0)
layout.addWidget(self.username,0,1)
layout.addWidget(self.password,1,1)
layout.addWidget(self.okbutton)
self.setLayout(layout)
Run Code Online (Sandbox Code Playgroud) 这很可能是一个重复的问题,但我不得不问它,因为其他答案对我来说没有帮助,因为我是 pyqt 的新手(几天前从 tkinter 转换而来)。
我想知道是否可以连接到这样的小部件事件:
self.lineEdit = QtGui.QLineEdit(self.frame)
self.lineEdit.keyReleaseEvent(lambda: someFunction(QtCore.Qt.Key_A ))
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.horizontalLayout.addWidget(self.lineEdit)
Run Code Online (Sandbox Code Playgroud)
进而...
def someFunction(event):
print(event)
...
Run Code Online (Sandbox Code Playgroud)
我的问题是如何从另一个小部件绑定到特定事件,并将该事件与类似函数的btn.clicked.connect(function_goes_here).
在 tkinter 它是这样的:
self.Entry.bind("<KeyRelease-a>", lambda event: someFunction(event))
Run Code Online (Sandbox Code Playgroud)