python version 3.3.2
ide:安装了PyQt的PyDev Eclipse
我在Qt Designer中设计了一个gui,保存了.ui文件并使用以下命令将其转换为python代码:
pyuic4 -x DeA.ui -o DeA.py
Qt Designer xml输出:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>485</width>
<height>374</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="btn_add">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>121</width>
<height>41</height>
</rect>
</property>
<property name="text">
<string>Add item</string>
</property>
</widget>
<widget class="QListView" name="lst">
<property name="geometry">
<rect>
<x>10</x>
<y>60</y>
<width>461</width>
<height>301</height>
</rect>
</property>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>
pyuic4 final python gui输出:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'DeA.ui'
#
# Created: Tue Jun 4 03:30:45 2013
# by: PyQt4 UI code generator 4.10.1
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(485, 374)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.btn_add = QtGui.QPushButton(self.centralwidget)
self.btn_add.setGeometry(QtCore.QRect(10, 10, 121, 41))
self.btn_add.setObjectName(_fromUtf8("btn_add"))
self.lst = QtGui.QListView(self.centralwidget)
self.lst.setGeometry(QtCore.QRect(10, 60, 461, 301))
self.lst.setObjectName(_fromUtf8("lst"))
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
self.btn_add.setText(_translate("MainWindow", "Add item", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
然后我将新创建的python文件(“DeA.py”)的内容复制并粘贴到我在PyDev Eclipse中的python文件中并点击Run,并且gui显示就好了;
我的问题:
究竟在PyDev Eclipse脚本窗格中(不使用Qt Designer中的插槽)我可以添加自己的python函数,这样当我点击“添加项目”按钮时,它会在ListView中添加100个项目吗?
我发现了这个问题:Linking a qtDesigner .ui file to python/pyqt?关于将.ui文件链接到最终项目并在运行时构建gui;但我无法理解;请帮忙;究竟应该在PyDev Eclipse脚本窗格中添加什么来链接.ui文件并在运行时构建它? (假设.ui文件路径为:D:\ DeA.ui)
答案 0 :(得分:0)
您无需将.ui文件实际转换为.py即可使用它, 你可以做这样的事情......
免得说我的.ui文件是
“C:/mydesign.ui”
from PyQt4 import QtGui
from PyQt4 import QtCore
from PyQt4 import uic
import sys
FORM_1, BASE_1 = uic.loadUiType(r"C:/mydesign.ui")
APP = QtGui.QApplication(sys.argv)
class MyApp(FORM_1, BASE_1):
def __init__(self, parent=None):
super(MyApp, self).__init__(parent)
self.setupUi(self)
self.connect(self.btn_add, QtCore.SIGNAL("released()"), self.do_something)
def do_something(self):
print "working"
FORM = MyApp()
FORM.show()
APP.exec_()