我正在阅读有关 Python 和 Qt 上的 Tabwidgets 的教程。我已经了解了它的基础知识。我想编写一个包含多个选项卡的应用程序,其中每个选项卡由多个小部件组成。我发现了一个关于codeloop的很棒的教程,其中使用了 PyQt5。我按照教程进行操作,但我用 PySide 2 替换了 PyQt5。不幸的是,它似乎无法在我的系统上运行。
我收到以下错误:
File "/home/conan/python/advanced/GUI/Qt/tabwidget-advanced.py", line 81, in <module>
app.exec()
AttributeError: 'PySide2.QtWidgets.QApplication' object has no attribute 'exec'
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
from PySide2 import QtGui
from PySide2.QtWidgets import QApplication, QDialog, QTabWidget, QComboBox, QCheckBox, QGroupBox, QVBoxLayout, QWidget, \
QLabel, QLineEdit, QDialogButtonBox
from PySide2.QtGui import QIcon, QFont
import sys
class Tab(QDialog):
def __init__(self):
super().__init__()
self.setWindowTitle("PyQt5 TabWidget Example")
self.setWindowIcon(QIcon("icon.png"))
# self.setStyleSheet('background-color:grey')
vbox = QVBoxLayout()
tabWidget = QTabWidget()
buttonbox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
buttonbox.accepted.connect(self.accept)
buttonbox.rejected.connect(self.reject)
tabWidget.setFont(QtGui.QFont("Sanserif", 12))
tabWidget.addTab(TabContact(), "Contact Details")
tabWidget.addTab(TabPeronsalDetails(), "Personal Details")
vbox.addWidget(tabWidget)
vbox.addWidget(buttonbox)
self.setLayout(vbox)
class TabContact(QWidget):
def __init__(self):
super().__init__()
nameLabel = QLabel("Name: ")
nameEdit = QLineEdit()
phone = QLabel("Phone:")
phoneedit = QLineEdit()
addr = QLabel("Address:")
addredit = QLineEdit()
email = QLabel("Email:")
emailedit = QLineEdit()
vbox = QVBoxLayout()
vbox.addWidget(nameLabel)
vbox.addWidget(nameEdit)
vbox.addWidget(phone)
vbox.addWidget(phoneedit)
vbox.addWidget(addr)
vbox.addWidget(addredit)
vbox.addWidget(email)
vbox.addWidget(emailedit)
self.setLayout(vbox)
class TabPeronsalDetails(QWidget):
def __init__(self):
super().__init__()
groupBox = QGroupBox("Select Your Gender")
list = ["Male", "Female"]
combo = QComboBox()
combo.addItems(list)
vbox = QVBoxLayout()
vbox.addWidget(combo)
groupBox.setLayout(vbox)
groupBox2 = QGroupBox("Select Your Favorite Programming Language")
python = QCheckBox("Python")
cpp = QCheckBox("C++")
java = QCheckBox("Java")
csharp = QCheckBox("C#")
vboxp = QVBoxLayout()
vboxp.addWidget(python)
vboxp.addWidget(cpp)
vboxp.addWidget(java)
vboxp.addWidget(csharp)
groupBox2.setLayout(vboxp)
mainLayout = QVBoxLayout()
mainLayout.addWidget(groupBox)
mainLayout.addWidget(groupBox2)
self.setLayout(mainLayout)
if __name__ == "__main__":
app = QApplication(sys.argv)
tabdialog = Tab()
tabdialog.show()
app.exec()
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
| 归档时间: |
|
| 查看次数: |
8041 次 |
| 最近记录: |