[英]PyQt5 can't create Tabbars or Tabs
我一直在努力學習PyQt5(和面向對象的編程)。 在當前腳本中,我需要創建一個選項卡式界面,但似乎無法對其進行管理。 我懷疑問題與OOP有關(我是新手)。 “自我”似乎是問題所在,我有點知道這意味着什么,但不足以解決它。 以下是我的最新嘗試。 似乎我在腳本的其他地方使用了“錯誤的自我”。 我非常想了解面向對象的編程-在此先感謝任何有足夠幫助的人!
一些代碼/錯誤是:
碼:
tabbar = QTabBar()
tab1 = QTabWidget()
tabbar.addTab(tab1, 'tab1')
錯誤:
TypeError: arguments did not match any overloaded call:
addTab(self, str): argument 1 has unexpected type 'QTabWidget'
addTab(self, QIcon, str): argument 1 has unexpected type 'QTabWidget'
這是代碼:
class App(QMainWindow):
def launch(self, filepath):
subprocess.run(filepath)
def newLauncher(self, matrix):
pass # cut for brevity
def __init__(self):
super(App, self).__init__()
tabbar = QTabBar()
tab1 = QTabWidget()
index = tabbar.addTab(tab1, 'tab1')
self.initUI()
def initUI(self):
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
您想了解OOP很好,但是在這種情況下,這不是主要問題,但似乎您沒有閱讀本文檔。 如果我們檢查它是否為QTabBar
,則會看到它指向QTabWidget
的頂部,即帶有按鈕的那部分。
您不必使用QTabBar
但QTabWidget
, QTabWidget
有addTab
需要作為第一個參數,將在頁面上顯示的窗口小部件,並作為第二個參數,將出現在按鈕的標題方法。
我在您的代碼中看到的另一個錯誤是,您創建了窗口小部件,但未將其設置為另一個窗口小部件的一部分,而只是我們知道函數完成后會刪除的局部變量。
由於您使用的是QMainWindow
,因此必須將QTabWidget
設置為中央窗口小部件的一部分,為此,我們可以使用布局。
import sys
from PyQt5.QtWidgets import *
class App(QMainWindow):
def __init__(self):
super(App, self).__init__()
centralWidget = QWidget()
lay = QVBoxLayout(centralWidget)
tab = QTabWidget()
lay.addWidget(tab)
for i in range(5):
page = QWidget()
tab.addTab(page, 'tab{}'.format(i))
self.setCentralWidget(centralWidget)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
ex.show()
sys.exit(app.exec_())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.