当前位置: 首页 > 面试题库 >

将QTDesigner与PyQT和Python 2.6结合使用

洪成济
2023-03-14
问题内容

我是Python的新手,并且开始自学使用PyQT4.7和Python 2.6进行GUI编程(希望如此)

我刚刚从PyQT网站下载了整个PyQT /
QT4软件包(包括QTDesigner),但是看起来QTDesigner看起来像个新手,因为每个小部件都看起来很棒(因为您可以看到所有属性/属性/默认设置等)编辑属性很棒,但是PyQT似乎没有设置QTDesigner与PyQT和PyQTs
python代码生成脚本直接集成:

例如:点击“查看代码”,尝试运行名为(uic)的Designer-> C ++脚本,而不是pyuic.py脚本等。

有没有办法让QTDesigner与PyQT紧密集成,以便像C ++一样快速生成代码?

如果不是,那是否意味着我必须在我的Python IDE中编码整个QT GUI并查找每个小部件的所有文档和样板代码?(与仅具有QTDesigner +
Python集成相比,似乎效率低下且笨拙)。

将Designer与PyQT结合使用的常规工具链//生产流程是什么?(如果不可能直接集成,那么python +
pyQT用户是否只是跳过全部一起使用QTDesigner并手动在python中编写所有QT GUI代码?)

对于PyQT新手的任何其他提示/建议,我们将不胜感激。谢谢!

ps我知道你们中的很多人可能会告诉我把它吸起来并手工编写所有QT
UI,但是如果我在按上述要求学习的同时使用Designer,请提供一种方法来学习更容易,谢谢!


问题答案:

我开始写我的第一个PyQT应用程序(PyQT仅用于处理GUI),看来,好的工具链是:QtDesigner生成.ui并处理资源和一些IDE,可以将QtDesigner设置为编辑它们。我使用Eclipse,因为它是高度可定制的。您可以通过在应用程序启动,安装或任何其他时间执行以下操作来按需编译.qrc和.ui:

os.system("pyrcc4.exe -o ui/images_rc.py ui/images/images.qrc")
uic.compileUiDir(appDir + '/ui', True)

然后以这种方式使用生成的类:

class MyMainWindow(QtGui.QMainWindow):

    def __init__(self, owner):
        QtGui.QMainWindow.__init__(self)
        # 'Ui_MyMainWindow' is the class, that was generated by uic, 
        # naming convention is: 'Ui_' plus the name of root widget in designer
        self.ui = Ui_MyMainWindow()
        self.ui.setupUi(self)

或者您可以在容器初始化时直接加载.ui:

    QtGui.QMainWindow.__init__(self)
    self.ui = None
    uic.loadUi('MyMainWindowUI.ui', self.ui)
    #now you have the instance of Ui_MyMainWindow in self.ui too, as above

请注意,我在.ui文件的名称中添加了UI后缀,这样做是为了避免名称交集,因为uic生成的.py文件的名称不是以’Ui_’开头的类名,而只是root小部件的。

还有一个注意事项:uic在生成的文件末尾放置“ import%.qrc name%_rc”(默认为import
images_rc)字符串,因此在使用pyrcc4时必须注意这一点。

整个方法足够灵活,需要您进行所有虚拟ui编码工作;但是您仍然可以在MyMainWindow.ui属性(Ui_MyMainWindow实例所在的位置)中进行一些微调;并且避免了不必要的继承。就我个人而言,我在MyMainWindow中制作_connectSlots和_initIntefrace方法来做一些设计器无法完成的工作。

我仍然要注意,自己编写接口代码是一种好方法,因为uic生成的代码很丑陋。我更喜欢通过loadUi()将.ui加载到位,因为:)而且,如果您有很多自定义PyQT控件,那么将它们带入QtDesigner实在是太麻烦了。



 类似资料:
  • 问题内容: 因此,如果我进入QtDesigner并构建UI,它将被另存为.ui文件。如何将其作为python文件或在python中使用? 问题答案: 在代码中使用.ui的另一种方法是: 两种方法都很好。不要忘记,如果您将Qt资源文件(极其有用)用于图标等,则也必须对其进行编译: 注意,在编译接口时,它将在.py文件的末尾添加“ import images_rc”,因此您必须使用此名称将资源编译到文

  • 本文向大家介绍PyQt-布局管理-1(使用QtDesigner拖放),包括了PyQt-布局管理-1(使用QtDesigner拖放)的使用技巧和注意事项,需要的朋友参考一下 版面 这意味着用于布置视觉元素的工具。换句话说,这是您工作的总体规划或蓝图。Qt设计器提供了多种布局: 调整大小:您可以在此布局中自由调整元素或小部件。在大多数情况下,这是您首次在小部件区域中插入布局时的默认布局。 盒子布局 水

  • 问题内容: 我们将Robotium与一起用于测试。虽然如此,我们想用Robotium代替Espresso,但是我们仍然有一些疑问,因为我们有一台装有Jenkins的CI机器。 Espresso使用的是Robotium ,而Robotium使用的是第一个,我们希望能够同时使用两个测试框架。可能吗?我们如何在文件中指定呢?我们如何配置我们的詹金斯机器,以针对不同的测试框架执行不同的任务? 我知道Esp

  • 问题内容: 我正在使用Hibernate Validator 4.0.2,Spring 3.0和Hibernate 3.3.2(据我所知,是JPA2之前的版本)作为JPA 1提供程序。 我发现将Validator集成到MVC层很容易(这是可行的),但是看不到如何将验证器自动集成到JPA entityManager(JPA 1)中。 基本上,我有一些实体将保留下来,但它们不是来自Web层,因此尚未经

  • 问题内容: 我试图了解Java java.security.Signature 类的作用。如果我计算一个SHA1消息摘要,然后使用RSA加密该摘要,则得到的结果与要求 Signature 类对同一事物进行签名的结果不同: 结果(例如): 输入数据:这是正在签名的消息 摘要:62b0a9ef15461c82766fb5bdaae9edbe4ac2e067 密码文本:057dc0d2f7f54acc9

  • 问题内容: 我在SO上发现了其他几个有关JavaMail API和通过SMTP服务器发送邮件的问题,但是没有一个使用TLS安全性进行讨论。我正在尝试使用JavaMail通过我的工作SMTP邮件服务器向我发送状态更新,但是它需要TLS,而且我在网上找不到任何有关如何使用JavaMail访问需要TLS加密的SMTP服务器的示例。有人能帮忙吗? 问题答案: 实际上,我们的产品中确实有一些通知代码,如果有