qt和python关系_Qt和Python D

Qt中通常有两种类型的小部件接口。一个是视图版本,另一个是小部件版本(继承视图)。最容易使用的是widget版本,对于您似乎正在尝试做的事情,我建议您这样做。在

另外,虽然你可以用你以前的方式来做软件,但通常遵循更常见的约定会更好。我修改了您的代码(包括构建主窗口的方式),让小GUI使用新方法(addCar)来将汽车类信息添加到QTreeWidget中:from PyQt5 import QtCore, QtGui, QtWidgets

import sys

#Python Data:

class car:

def __init__(self, name, color):

self.name = name

self.color = color

#Window:

class Ui_MainWindow(QtWidgets.QMainWindow):

def __init__(self):

super(Ui_MainWindow, self).__init__()

self.setupUi()

def setupUi(self):

self.setObjectName("MainWindow")

self.resize(800, 600)

self.centralwidget = QtWidgets.QWidget(self)

self.centralwidget.setObjectName("centralwidget")

self.pushButton = QtWidgets.QPushButton(self.centralwidget)

self.pushButton.setGeometry(QtCore.QRect(650, 510, 75, 23))

self.pushButton.setObjectName("pushButton")

# self.treeView = QtWidgets.QTreeView(self.centralwidget)

self.treeView = QtWidgets.QTreeWidget(self.centralwidget)

self.treeView.setColumnCount(1)

self.treeView.setGeometry(QtCore.QRect(30, 20, 591, 481))

self.treeView.setObjectName("treeView")

self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)

self.lineEdit.setGeometry(QtCore.QRect(680, 120, 113, 20))

self.lineEdit.setObjectName("lineEdit")

self.label = QtWidgets.QLabel(self.centralwidget)

self.label.setGeometry(QtCore.QRect(630, 120, 46, 13))

self.label.setObjectName("label")

self.setCentralWidget(self.centralwidget)

self.menubar = QtWidgets.QMenuBar(self)

self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))

self.menubar.setObjectName("menubar")

self.setMenuBar(self.menubar)

self.statusbar = QtWidgets.QStatusBar(self)

self.statusbar.setObjectName("statusbar")

self.setStatusBar(self.statusbar)

self.retranslateUi()

QtCore.QMetaObject.connectSlotsByName(self)

def addCar(self, car, name):

item = QtWidgets.QTreeWidgetItem([name])

child1 = QtWidgets.QTreeWidgetItem(["Type: " + car.name])

child2 = QtWidgets.QTreeWidgetItem(["Type: " + car.color])

item.addChild(child1)

item.addChild(child2)

self.treeView.addTopLevelItem(item)

def retranslateUi(self):

_translate = QtCore.QCoreApplication.translate

self.setWindowTitle(_translate("MainWindow", "MainWindow"))

self.pushButton.setText(_translate("MainWindow", "Apply"))

self.label.setText(_translate("MainWindow", "Value"))

if __name__ == "__main__":

#create Data

blue_car = car("family_car", "blue")

red_car = car("sports_car", "red")

#open UI

app = QtWidgets.QApplication(sys.argv)

# MainWindow = QtWidgets.QMainWindow()

ui = Ui_MainWindow()

# ui.setupUi(MainWindow)

# Add car object

ui.addCar(blue_car, "Blue Car")

ui.addCar(red_car, "Red Car")

ui.show()

sys.exit(app.exec_())

结果是:

af9d1b5c203920d6d71e4252f9044829.png

另外,我建议你试试看pyQt5的在线快速教程(任意示例:zetcode),因为如果你现在开始使用这种方法来构建软件,那么在我看来,你试图应用的方法最终会在将来重写它的大部分内容(我想……)。我过去也犯过同样的错误。在

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值