小编ekh*_*oro的帖子

PyQt中的悬停问题

我想要悬停.我看了一个例子然后编写了一个脚本,它将在我制作程序时使用.我面临一个问题,只有当你将鼠标放在按钮的左上角时才会发生悬停.我希望它会发生在所有按钮上,如果我移动光标按钮然后它应该改变.

这是我的代码:

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)

python pyqt hover pyqt4

4
推荐指数
1
解决办法
5628
查看次数

如何使用PyQt4.QtWebKit从选项列表中选择值

我正在尝试使用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)

python qt qtwebkit pyqt4 option

4
推荐指数
1
解决办法
1167
查看次数

在PyQt4中调整小部件的大小

我使用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 resize widget pyqt4

4
推荐指数
1
解决办法
8016
查看次数

分段错误(核心转储),执行线程

我试图在 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)

python multithreading pyqt

4
推荐指数
1
解决办法
3862
查看次数

在 Python (PyQt) 中创建 QR 码

我目前正在使用 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 引用,则在加载小部件时会得到垃圾。

我的问题:我可以做些什么来改善这一点,因为似乎涉及很多转换。

python qr-code pyqt qpixmap python-imaging-library

4
推荐指数
1
解决办法
3733
查看次数

如何在不使用类的情况下自动调整QLabel pixmap保持率?

我们正在使用PyQt和Qt Designer制作GUI.现在我们需要放置在QLabel中的图像(像素图)在调整窗口大小时很好地保持比例.

我一直在阅读其他问题/答案,但他们都使用扩展课程.由于我们在UI中不断进行更改,并且使用Qt Creator创建,因此会自动生成.ui和(相应的).py文件,因此,如果我没有错,使用类解决方案不是一个好的选择.我们因为每次更新ui时都应该手动更改类的名称.

是否有任何选项可以自动调整QLAbel中的像素图,保持比率并避免使用扩展的clases?

谢谢.

python resize pyqt qt-designer qlabel

4
推荐指数
1
解决办法
4943
查看次数

如何识别应用程序在 Linux 上以深色主题运行?

我开发了一个使用 qscintilla 作为文本编辑器的应用程序。我还实现了自定义词法分析器来突出语言特定的关键字。到目前为止,突出显示关键字的样式在我的应用程序中是硬编码的,并且在 Windows/Linux(Ubuntu)/Mac 上的默认主题中看起来很不错。

当用户选择深色主题(在 Linux 上)时会出现问题。根据 QScintilla 版本,编辑器的某些部分确实反映了当前的主题颜色,而其他部分则没有。此外,我的自定义样式在深灰色背景上呈现深蓝色字母。

我正在寻找一些 Qt 类,这将允许我访问当前系统主题。我不想为我的应用程序小部件定义样式。我想知道什么是系统默认的非比例字体,它的大小、颜色是什么……如果我知道使用了深色方案,我会选择互补色来突出显示关键字。

我检查了 QStyle、QPlatformTheme 和其他 qt 类的文档,在我看来,它们更多地用于定义新样式,然后用于描述当前样式。

c++ qt themes qscintilla qt5

4
推荐指数
2
解决办法
1427
查看次数

PyQt:QScrollArea 内小部件的环绕式布局

我正在开发一个使用 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)

python layout pyqt alignment qscrollarea

4
推荐指数
2
解决办法
3301
查看次数

如何在 QLineEdit 中隐藏密码

想要隐藏“*”键入的密码。但是密码显示为原始文本...

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)

passwords pyside qlineedit python-2.7

4
推荐指数
1
解决办法
6638
查看次数

连接到另一个小部件的事件

这很可能是一个重复的问题,但我不得不问它,因为其他答案对我来说没有帮助,因为我是 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)

python events pyqt python-3.x

4
推荐指数
1
解决办法
1864
查看次数