标签: pyqt4

如何在Pyqt中有一个目录对话框

如何有一个文件对话框,只选择目录而不是PyQt中的文件?

如何检索所选目录的名称?

python pyqt file-browser pyqt4

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

什么是避免PyQt崩溃/挂起的好方法?

我喜欢python和Qt,但对我来说很明显,Qt并不是用python设计的.有许多方法可以使PyQt/PySide应用程序崩溃,其中许多方法都非常难以调试,即使使用适当的工具也是如此.

我想知道:使用PyQt和PySide时,避免崩溃和锁定的好方法是什么?这些可以是从一般编程技巧和支持模块到高度特定的变通方法和要避免的错误.

python pyqt pyqt4

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

无法使用pickle和多个模块加载文件

我正在尝试创建一个使用设置和Gui模块的用户系统,当gui模块请求使用pickle加载文件时,我不断收到属性错误.这是来自设置模块:

import pickle
import hashlib

class User(object):
    def __init__(self, fname, lname, dob, gender):
        self.firstname = fname
        self.lastname = lname
        self._dob = dob
        self.gender = gender
        self.type = 'General'
        self._username = ''
        self._hashkey = ''

    def Report(self):
        print("Full Name: {0} {1}\nDate of Birth: {2}\nGender: {3}\nAccess Level: {4}".format(self.firstname,self.lastname, self._dob, self.gender, self.type))
        print(self._username)

    def Genusername(self):
        self._username = str(str(self._dob)[:2] + self.firstname[:2] + self.lastname[:2])
        saveUsers(users)

    def Genhashkey(self, password):
        encoded = password.encode('utf-8','strict')
        return hashlib.sha256(encoded).hexdigest()

    def Verifypassword(self, password):
        if self._hashkey == self.Genhashkey(password):
            return True
        else:
            return False …
Run Code Online (Sandbox Code Playgroud)

python multithreading login pickle pyqt4

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

如何在字符串中按下QpushButton时在QlineEdit中获取文本?

我正在尝试实现一个功能.我的代码如下.

我希望当用户点击名为"connect"的按钮时,在字符串中使用对象名称'host'的文本中的文本说'shost'.我怎样才能做到这一点?我尝试过但失败了.我该如何实现这个功能?

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *


class Form(QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)

        le = QLineEdit()
        le.setObjectName("host")
        le.setText("Host")
        pb = QPushButton()
        pb.setObjectName("connect")
        pb.setText("Connect") 
        layout.addWidget(le)
        layout.addWidget(pb)
        self.setLayout(layout)

        self.connect(pb, SIGNAL("clicked()"),self.button_click)

        self.setWindowTitle("Learning")

    def button_click(self):
    #i want the text in lineedit with objectname 
    #'host' in a string say 'shost'. when the user click 
    # the pushbutton with name connect.How do i do it?
    # I tried and failed. How to implement this function?




app = QApplication(sys.argv)
form = …
Run Code Online (Sandbox Code Playgroud)

python pyqt4 qlineedit

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

PEP8和PyQt,如何协调功能大写?

我开始在一些项目中使用PyQt,而且我遇到了风格困境.PyQt的函数使用驼峰的情况,但我更喜欢遵循的PEP8表示使用下划线和函数名称的全部小写.

所以一方面,我可以继续关注PEP8,这意味着我的代码将混合函数调用驼峰大小写和下划线函数,甚至我的类也会有混合函数名,因为我需要重载函数如mousePressEvent .或者,我可以打破PEP8,并以一致性的名义为我的所有函数名称采用驼峰案例.

我意识到这是主观的,这真的是我个人喜欢的,但我喜欢听别人说他们做了什么以及他们选择这样做的原因.

python coding-style pyqt pep8 pyqt4

32
推荐指数
4
解决办法
2341
查看次数

在PyQt应用程序中嵌入IPython Qt控制台

我想在我正在研究的PyQt应用程序中嵌入一个IPython qt控制台小部件.下面提供的代码(并改编自/sf/answers/685754401/)适用于IPython v0.12.但是,这在IPython v0.13中崩溃self.heartbeat.start()RuntimeError: threads can only be started once.注释掉这一行会显示小部件,但不会响应用户输入.

有谁知道如何实现IPython v0.13的等效功能?

"""
Adapted from
https://stackoverflow.com/a/9796491/1332492
"""
import os
import atexit

from IPython.zmq.ipkernel import IPKernelApp
from IPython.lib.kernel import find_connection_file
from IPython.frontend.qt.kernelmanager import QtKernelManager
from IPython.frontend.qt.console.rich_ipython_widget import RichIPythonWidget
from IPython.config.application import catch_config_error
from PyQt4 import QtCore


class IPythonLocalKernelApp(IPKernelApp):
    DEFAULT_INSTANCE_ARGS = ['']

    @catch_config_error
    def initialize(self, argv=None):
        super(IPythonLocalKernelApp, self).initialize(argv)
        self.kernel.eventloop = self.loop_qt4_nonblocking

    def loop_qt4_nonblocking(self, kernel):
        """Non-blocking version of the ipython qt4 kernel loop"""
        kernel.timer = QtCore.QTimer()
        kernel.timer.timeout.connect(kernel.do_one_iteration) …
Run Code Online (Sandbox Code Playgroud)

python qt ipython pyqt4

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

如何使用PyQt4将文件移动到不同平台上的回收站/垃圾箱?

我想在我的跨平台PyQt4应用程序中添加下一个功能:当用户选择某个文件并选择"删除"操作时,该文件将被移动到回收站文件夹而不是永久删除.我想我可以使用Win32 API或类似的东西找到特定于Windows的解决方案,但我想知道在Ubuntu/Linux和MaxOSX上也可以通过PyQt4方法执行类似的操作.

python recycle-bin cross-platform qt4 pyqt4

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

在PyQt中使用QThread的正确方法示例?

我正在尝试学习如何在PyQt Gui应用程序中使用QThreads.我有一些运行一段时间的东西,有(通常)点我可以更新一个Gui,但我想将主要工作拆分到它自己的线程(有时候东西会卡住,最终会有一个很好的取消/再试一次按钮,如果由于主循环被阻止,Gui被冻结,这显然不起作用).

我已阅读https://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/.该页面说重新实现该run方法不是这样做的方法.我遇到的问题是找到一个PyQt示例,其中有一个主线程正在执行Gui,而一个工作线程没有这样做.这篇博文是针对C++的,所以虽然它的例子确实有帮助,但我仍然有点失落.有人可以请给我一个在Python中正确方法的例子吗?

python pyqt pyqt4 qthread

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

你如何获得QComboBox的当前文本内容?

使用pyqt4和python 2.6,我使用qcombobox提供选项列表.我在使用所选选项时遇到问题.当选择该选项时,我能够使用信号触发方法,但问题是当用户点击运行时,需要考虑其中几个组合框的内容.所以基本上我需要将组合框的选定内容作为字符串.到目前为止,我只能使用这个:

print combobox1.currentText()
Run Code Online (Sandbox Code Playgroud)

得到这个:

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

当我真正想要的是"测试选择"位时,任何想法?我的组合框是这样的:

combobox1 = qt.QComboBox()
combobox1.addItems(['Test Selection1', 'Test Selection2'])
mainLayout.addWidget(combobox1, 0, 0)
Run Code Online (Sandbox Code Playgroud)

python pyqt python-2.6 pyqt4 qcombobox

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

发送自定义PyQt信号?

我正在通过制作一个简单的Twitter客户端来练习PyQt和(Q)线程.我有两个Qthreads.

  1. 主/ GUI线程.

  2. Twitter获取线程 - 每隔X分钟从Twitter获取数据.

因此,每隔X分钟我的Twitter线程就会下载一组新的状态更新(Python列表).我想将此列表交给Main/GUI线程,以便它可以使用这些状态更新窗口.

我假设我应该使用信号/插槽系统将"状态"Python列表从Twitter线程传输到Main/GUI线程.所以,我的问题是双重的:

  1. 如何从Twitter线程发送状态?

  2. 如何在Main/GUI线程中收到它们?

据我所知,PyQt默认只能通过信号/插槽发送PyQt对象.我想我应该以某种方式注册一个我可以发送的自定义信号,但我发现的这个文档对于像我这样的新手来说是非常不清楚的.我订购了一本PyQt书,但它不会在另一周到来,我不想等到那时.:-)

我在Ubuntu上使用PyQt 4.6-1

更新:

这是一个不起作用的代码.首先,我尝试将信号("newStatuses",我刚刚编写的名称)"连接"到Main/GUI线程中的函数self.update_tweet_list:

QtCore.QObject.connect(self.twit_in,
                       QtCore.SIGNAL("newStatuses (statuses)"),
                       self.update_tweet_list)
Run Code Online (Sandbox Code Playgroud)

然后,在Twitter主题中,我这样做:

self.emit(SIGNAL("newStatuses (statuses)"), statuses)
Run Code Online (Sandbox Code Playgroud)

调用此行时,我收到以下消息:

QObject::connect: Cannot queue arguments of type 'statuses'
(Make sure 'statuses' is registered using qRegisterMetaType().)
Run Code Online (Sandbox Code Playgroud)

我搜索了qRegisterMetaType(),但是我找不到任何与Python有关的东西,我能理解.

python pyqt pyqt4 qthread

28
推荐指数
4
解决办法
3万
查看次数