小编ekh*_*oro的帖子

Qt - 获取QLabel中字符串的像素长度

我有一个固定宽度的QLabel.
我需要(定期)检查整个字符串是否适合当前宽度的QLabel内部,因此我可以适当调整它的大小.

为此,我需要获取字符串的"像素长度".
(显示字符串所需的水平像素总数).
应该注意的是,QLabel的点大小永远不会改变.

字符串的

我不能简单地检查存在的字符数量,因为有些字符是下标/上标,并且对整个字符串的宽度有不同的贡献.
(这就是说像素宽度和字符数量之间没有简单的关系)

这有什么抽象的,超级便利的功能吗?

规格:
Python 2.7.1
PyQt4
Windows 7

python pyqt width pyqt4 qlabel

15
推荐指数
1
解决办法
2万
查看次数

如何使用PyQt更改光标形状?

我有一个简单的应用程序,它运行一个可以在完成之前持续几分钟的过程.所以我试图向用户提供一个指示器,它正在处理请求,例如将光标更改为沙漏.

但我不能让它正常工作.我的所有尝试都导致错误或无效.我似乎错误地调用了cursorshapes PyQt4.Qt.WaitCursor返回一个模块不包含它的错误.

向用户指示进程正在运行的正确方法是什么?

python pyqt cursor pyqt4 pyqt5

14
推荐指数
3
解决办法
2万
查看次数

加入时的UnicodeDecodeError

我有一个包含一些字符串的列表(其中大部分是从sqlite3数据库中获取的):

stats_list = ['Statistik \xc3\xb6ver s\xc3\xa5nger\n', 'Antal\tS\xc3\xa5ng', '1\tCarola - Betlehems Stj\xc3\xa4rna', '\n\nStatistik \xc3\xb6ver datak\xc3\xa4llor\n', 'K\xc3\xa4lla\tAntal', 'MANUAL\t1', '\n\nStatistik \xc3\xb6ver \xc3\xb6nskare\n', 'Antal\tId', u'1\tNiclas']
Run Code Online (Sandbox Code Playgroud)

当我尝试加入时:

return '\n'.join(stats_list)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 10: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

是否有可能通过查看列表得到任何线索?如果我遍历列表并将其打印到屏幕,我得到这个:

Statistik över sånger

Antal   Sång 
1   Carola - Betlehems Stjärna


Statistik över datakällor

Källa   Antal 
MANUAL  1


Statistik över önskare

Antal   Id
1   Niclas

这正是我所期待的,并没有显示错误.(特殊字符是瑞典语).

编辑:

我试过这个:

   return '\n'.join(i.decode('utf8') for i in stats_list)
Run Code Online (Sandbox Code Playgroud)

但它回来了:

Traceback (most recent call last):
  File …
Run Code Online (Sandbox Code Playgroud)

python unicode character-encoding

13
推荐指数
2
解决办法
9963
查看次数

如何从QVariant获取原始python数据

这些天我只是在学习python和Qt.所以请考虑这将是一个新手问题,但我被困在这里.

import sys
from PyQt4.QtCore import *

data1 = 'string'
data2 = QVariant(data1)
data3 = data2.toPyObject()
Run Code Online (Sandbox Code Playgroud)

我期望data3与data1,'string'相同.但是在我的系统中data3是

PyQt4.QtCore.QString(u'string')
Run Code Online (Sandbox Code Playgroud)

如果我想处理的数据很简单,例如,但是我想处理'dict'类型的数据,所以我需要解决这个问题,这不是什么大问题.

我认为这是编码问题,但找不到如何解决它.

*在每份文件中,我都声明:

#-*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)

python pyqt data-conversion qvariant pyqt4

13
推荐指数
1
解决办法
1万
查看次数

'str'不支持Python2的缓冲区接口Python3

你好Py2中的这两个功能工作正常,但它不适用于Py3

def encoding(text, codes):
    binary = ''
    f = open('bytes.bin', 'wb')
    for c in text:
        binary += codes[c]
    f.write('%s' % binary)
    print('Text in binary:', binary)
    f.close()
    return len(binary)

def decoding(codes, large):
    f = file('bytes.bin', 'rb')
    bits = f.read(large)
    tmp = ''
    decode_text = ''
    for bit in bits:
        tmp += bit
        if tmp in fordecodes:
            decode_text += fordecodes[tmp]
            tmp = ''
    f.close()
    return decode_text
Run Code Online (Sandbox Code Playgroud)

控制台输出:

Traceback (most recent call last):
  File "Practica2.py", line 83, in <module>
    large = encoding(text, codes) …
Run Code Online (Sandbox Code Playgroud)

python string unicode bytearray python-3.x

13
推荐指数
2
解决办法
5万
查看次数

PyQt:退出时没有错误消息(追溯)

我的PyQt应用程序不再将错误(stderr?)打印到控制台.

我使用QtDesigner并导入这样的UI:

from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from PyQt5.uic import loadUiType
Ui_MainWindow, QMainWindow = loadUiType("test.ui")

class Main(QMainWindow, Ui_MainWindow):
    """Main window"""
    def __init__(self,parent=None):
        super(Main, self).__init__(parent)
        self.setupUi(self)
        self.pushButton.clicked.connect(self.testfunc)

   def testfunc(self):
        print(9/0)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    main = Main()
    main.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

test.ui包含QPushButton和标签.当我在非Qt应用程序中调用testfunc(显然会出现错误)时,我会收到错误消息,回溯等.当我执行此代码时,它只是退出.

之前我没有使用QtDesigner写了一个PyQt应用程序,它按预期将错误打印到控制台.与QtDesigner和继承有什么区别?

python pyqt qt-designer pycharm pyqt5

13
推荐指数
1
解决办法
7257
查看次数

安装PySide for Python-3.6

当我尝试为Python-3.6安装PySide时,它说它只能在Python-3.4之前兼容.是否有任何解决方法为Python-3.6安装它?

似乎只支持这些Python版本:

[(2, 6), (2, 7), (3, 2), (3, 3), (3, 4)].
Run Code Online (Sandbox Code Playgroud)

installation pyside python-3.6 pyside2

13
推荐指数
1
解决办法
1万
查看次数

PyQt为特定元素赋予颜色

这可能是一个简单的问题,但我试图在我的应用程序中为特定的QLabel赋予颜色,但它不起作用.

我尝试的代码如下:

nom_plan_label = QtGui.QLabel()
nom_plan_label.setText(nom_plan_vignette)
nom_plan_label.setStyleSheet("QLabel#nom_plan_label {color: yellow}")
Run Code Online (Sandbox Code Playgroud)

任何提示都将不胜感激

python pyqt pyqt4 qlabel qtstylesheets

12
推荐指数
1
解决办法
3万
查看次数

登录对话框PyQt

当客户询问我是否可以在应用程序启动时实现某种登录表单时,我几乎完成了我的应用程序.

到目前为止,我已经设计了UI,并对实际执行进行了修改.用户名和密码暂时无关紧要.

class Login(QtGui.QDialog):
    def __init__(self,parent=None):
        QtGui.QWidget.__init__(self,parent)
        self.ui=Ui_dlgLogovanje()
        self.ui.setupUi(self)

        QtCore.QObject.connect(self.ui.buttonLogin, QtCore.SIGNAL("clicked()"), self.doLogin)

    def doLogin(self):
        name = str(self.ui.lineKorisnik.text())
        passwd = str(self.ui.lineSifra.text())
        if name == "john" and passwd =="doe":
            self.runIt()
        else:
            QtGui.QMessageBox.warning(self, 'Greška',
        "Bad user or password", QtGui.QMessageBox.Ok)           

    def runIt(self):
        myprogram = Window()        
        myprogram.showMaximized() #myprogram is

class Window(QtGui.QMainWindow):
    def __init__(self,parent=None):
        QtGui.QWidget.__init__(self,parent)
        self.ui=Ui_MainWindow()
        self.ui.setupUi(self)


if __name__=="__main__":
    program = QtGui.QApplication(sys.argv)
    myprogram = Window()
    if Login().exec_() == QtGui.QDialog.Accepted:       
        sys.exit(program.exec_())
Run Code Online (Sandbox Code Playgroud)

登录表单显示.如果输入了正确的用户名和密码,则会显示主窗口并正常工作.但是,登录表单保持活动状态,如果我关闭它,主窗口也将关闭.

python qt dialog login pyqt

12
推荐指数
1
解决办法
2万
查看次数

Python:如何使用PyQt调整光栅图像的大小

我需要找到一种方法来将输入光栅图像(例如jpg)重新调整为指定的宽度/高度分辨率(以像素为单位).如果在调整新图像大小时PyQt会保持原始图像的纵横比(因此没有拉伸而只是缩放)会很棒.

src ='/ Users/usrName/images/originalImage.jpg'(2048x1024)(矩形图像2:1比例)dest ='/ Usrs/usrName/images/originalImage_thumb.jpg'(64x64)(输出图像为方形1:1)比).

提前致谢!

发布结果FUNC:

...可用于调整大小并将图像转换为QT支持的任何格式到目前为止...例如:'bmp','gif','jpg','jpeg','png','pbm', 'tiff','svg','xbm'

def resizeImageWithQT(src, dest):
    pixmap = QtGui.QPixmap(src)
    pixmap_resized = pixmap.scaled(720, 405, QtCore.Qt.KeepAspectRatio)
    if not os.path.exists(os.path.dirname(dest)): os.makedirs(os.path.dirname(dest))
    pixmap_resized.save(dest)
Run Code Online (Sandbox Code Playgroud)

python resize image pyqt aspect-ratio

12
推荐指数
1
解决办法
3万
查看次数