QTabWidget крошечный по сравнению с контейнеромPython

Программы на Python
Ответить
Anonymous
 QTabWidget крошечный по сравнению с контейнером

Сообщение Anonymous »

Я пытаюсь создать экран графического интерфейса с набором вкладок и панелью инструментов, но виджет вкладок заполняет только самый верхний угол экрана, а кнопки панели инструментов перекрывают его. И это несмотря на то, что на самом деле окно отображается в полноэкранном режиме.
Введите здесь описание изображения
Код, который я использую, приведен ниже.
import sys

from PyQt6.QtWidgets import QApplication, QWidget, QTabWidget, QGridLayout, QToolButton, QMainWindow
from PyQt6.QtGui import QColor

from devtunnel import toggleServerActive

# Defines a testing function to visualise widgets as blocks of colour
def applyBlockColour(widget : QWidget, colour : str):
widget.setAutoFillBackground(True)
pallette = widget.palette()
pallette.setColor(widget.backgroundRole(), QColor(colour))
widget.setPalette(pallette)

class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.tabs = QTabWidget(self)
self.toolbar = self.addToolBar("main")

# Defines the basic tab class which containes each tab window
class Tab(QWidget):
def __init__(self, colour : str, window : MainWindow, tab_name : str):
super(Tab, self).__init__()
applyBlockColour(self, colour)

self.layout_style = QGridLayout(self)

window.tabs.addTab(self, tab_name)

def add_tab_item(self, tab_item) -> None:
row = tab_item.positioning[0]
column = tab_item.positioning[1]
rowSpan = tab_item.positioning[2]
columnSpan = tab_item.positioning[3]
self.layout_style.addWidget(tab_item, row, column, rowSpan, columnSpan)

# Defines an item that is located within a tab
class TabItem(QWidget):
def __init__(self, colour: str, parent : Tab, row : int, column : int, rowSpan = 1, columnSpan = 1):
super(TabItem, self).__init__()
applyBlockColour(self, colour)

self.positioning = [row, column, rowSpan, columnSpan]

self.layout_style = QGridLayout(self)

parent.add_tab_item(self)

#Defines a button that is located on a tool bar
class ToolBarButton(QToolButton):
def __init__(self, parent : MainWindow, text : str, func):
super(ToolBarButton, self).__init__()
self.setText(text)
font = self.font()
font.setBold(True)
self.setFont(font)
self.clicked.connect(func)
parent.toolbar.addWidget(self)

def devtunnelToggle():
state = toggleServerActive()
if state:
pass

# Creates the main window
app = QApplication([])
main_window = MainWindow()

#Adds buttons to the toolbar
close_button = ToolBarButton(main_window, "X", main_window.window().close)

devtunnel_button = ToolBarButton(main_window, "Disabled", devtunnelToggle)

overview_screen = Tab('red', main_window, "Overview")

teams_screen = Tab('blue', main_window, "Teams")

#Loads the app and shows it in full screen
main_window.showFullScreen()

#Closes the program properly when the gui window is closed
sys.exit(app.exec())```

I was expecting the tool bar to fill the entire window width and then the tab bar to be shown below as wide as the number of tabs.


Подробнее здесь: https://stackoverflow.com/questions/791 ... -container
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»