Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
6 / 5 / 1
Регистрация: 12.11.2019
Сообщений: 153

Переключаться между вкладками

30.11.2021, 15:17. Показов 5040. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу приложение на QT(выбрал язык Python, но все равно мне нужна ваша помощь, поэтому пусть будет С++), и мне нужно реализовать переключение между вкладками. На просторах интернета, в качестве и вся суть в том, что переключение осуществляется между вкладками, которые именно кнопки(вместе с графическим выделением), а мне нужно переключаться между вкладками по клику на label(т.к. у меня присутствует своя графика). Возможно ли сделать это с помощью виджетов(может быть просто их наложить друг на друга, а потом показываться тот, который нужен)?

Это как по примеру - переключение между вкладками с помощью кнопок


Предполагаемый вид
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.11.2021, 15:17
Ответы с готовыми решениями:

QTabWidget переход между вкладками
Здравствуйте, а не подскажите какая функция или их последовательность может помочь перейти к определнной вкладке? Допустим, я нахожусь...

Открыто два окна. Как переключаться между ними, не используя мышь? т.е. программно
Открыто два окна. Как переключаться между ними, не используя мышь? т.е. программно.

Как удобно переключаться между вкладками Google Chrome?
Я постоянно отрываю их слишком много из-за чего названия больше не видны, закрыть не могу т. к. всегда может возникнуть потребность...

29
фрилансер
 Аватар для Алексей1153
6506 / 5755 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
01.12.2021, 07:28
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Lapys Посмотреть сообщение
он закрывает интерфейс
а компоновщиками пользуешься ? Или просто накидано на форму всё
0
6 / 5 / 1
Регистрация: 12.11.2019
Сообщений: 153
01.12.2021, 10:42  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
а компоновщиками пользуешься ? Или просто накидано на форму всё
Ничем не пользовался, просто передал все в форму. На данный момент решил это обычной отправкой на задний план с помощью raise.

Добавлено через 8 минут
Цитата Сообщение от insite2012 Посмотреть сообщение
Lapys, если вам очень хочется поэкспериментировать с дизайном, то советую постепенно переходить на QtQuik/QML. Там намного больше возможностей по кастомизации интерфейса, чем в стандартных QtWidgets.
Мне передали дизайн и параметры функционала, которые должны быть реализованы. Я работал только в Qt Design, после чего ui > py(не обращайте внимание на py) и теперь с этим работаю.
0
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
01.12.2021, 14:50
На основе примера, ссылку на который выше скидывал:
Кликните здесь для просмотра всего текста

mainwindow.h, main.cpp - стандартные при создании проекта QWidget
tabbar.h (class TabBar)
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#ifndef TABBAR_H
#define TABBAR_H
 
#include <QTabBar>
#include <QStyleOptionTab>
#include <QStylePainter>
#include <QPaintEvent>
 
class TabBar : public QTabBar
{
    Q_OBJECT
public:
    TabBar(int lineTrick=1, QWidget *parent=nullptr)
        : QTabBar(parent), lineThickness(lineTrick) {
 
               connect(this, &QTabBar::tabBarClicked, [this](int index){
                   selectTab=index;
               });//получаем номер вкладки, на которую нажали
 
               QFont font("Arial", 18, QFont::Bold);
               setFont(font);
               //setStyleSheet("QTabBar { font-size: 18pt;}"); //можно еще так установить шрифт
 
    }
    virtual ~TabBar()override{}
 
private:
    int selectTab=0;
    int lineThickness;//толщина линии подчеркивания во вкладке
 
protected:
    void paintEvent(QPaintEvent *event)override{
        Q_UNUSED(event)
 
        QStylePainter painter(this);
 
        QStyleOptionTab opt;
 
        for(int i = 0;i < count();i++)
        {
            initStyleOption(&opt,i);
 
            painter.save();
 
            if(i==selectTab){
                painter.fillRect(QRect(opt.rect.bottomLeft().x(),
                                       opt.rect.bottomLeft().y()-lineThickness,
                                       opt.rect.width(), lineThickness),
                                       QBrush(Qt::red));//рисуем линию подчеркивания если на вкладку нажали
            }
 
            //painter.drawControl(QStyle::CE_TabBarTabShape, opt);//рамки вкладки не рисуем
            painter.drawControl(QStyle::CE_TabBarTabLabel,opt);
            painter.restore();
        }
    }
};
 
#endif // TABBAR_H
tabwidget.h (class TabWidget)
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#ifndef TABWIDGET_H
#define TABWIDGET_H
 
#include <QTabWidget>
#include <tabbar.h>
 
class TabWidget : public QTabWidget
{
    Q_OBJECT
public:
    TabWidget(QWidget *parent=nullptr):QTabWidget(parent){
 
        TabBar *tabBar=new TabBar(3);
        setTabBar(tabBar);
        setStyleSheet("QTabWidget:tab-bar {alignment: center;}");//вкладки по центру
    }
 
 
protected:
    void paintEvent(QPaintEvent *event)override{
        Q_UNUSED(event)
 
        QStylePainter painter(this);
        painter.fillRect(rect(), QBrush(Qt::gray));//фон сделаем серым
    }
};
 
#endif // TABWIDGET_H
mainwindow.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "mainwindow.h"
#include <QVBoxLayout>
#include <QLabel>
#include "tabwidget.h"
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(400,300);
 
     TabWidget *tabWidget=new TabWidget;
 
     QWidget *leftWgt=new QWidget;//виджеты для наполнения контентом
     QWidget *rightWgt=new QWidget;
 
     tabWidget->addTab(leftWgt, "LEFT"); //добавляем вкладки
     tabWidget->addTab(rightWgt, "RIGHT");
 
     QVBoxLayout *vlayout1=new QVBoxLayout;//компоновщики для контента
     QVBoxLayout *vlayout2=new QVBoxLayout;
 
     vlayout1->setAlignment(Qt::AlignCenter);//контент по центру
     vlayout2->setAlignment(Qt::AlignCenter);
 
     QLabel *l1=new QLabel("left content");//сам контент, просто надпись для примера
     QLabel *l2=new QLabel("right content");
 
     QFont font("Times", 20, QFont::Bold);
     l1->setFont(font);
     l2->setFont(font);
 
     vlayout1->addWidget(l1);//устанавливаем контент в компоновщики
     vlayout2->addWidget(l2);
 
     leftWgt->setLayout(vlayout1);//ставим компоновщики в виджеты контента
     rightWgt->setLayout(vlayout2);
 
     setCentralWidget(tabWidget);
}
 
MainWindow::~MainWindow()
{
}

получилось такоеhttps://www.cyberforum.ru/atta... 1638359310
Вроде похоже как у Вас на ТЗ... Теперь переводите на питон
Миниатюры
Переключаться между вкладками  
0
 Аватар для kapbepucm
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,661
01.12.2021, 15:15
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton
from PyQt5.QtWidgets import QGridLayout, QHBoxLayout, QVBoxLayout
from PyQt5.QtCore    import Qt, pyqtSignal
 
class Header(QLabel):
  clicked = pyqtSignal(int)
  def __init__(self, text, index):
    super().__init__(text)
    self.index = index
  def mousePressEvent(self, event):
    if event.button() == Qt.LeftButton:
      self.clicked.emit(self.index)
 
class Tab(QWidget):
  def __init__(self):
    super().__init__(None)
    self.setFixedWidth(500)
    self.setFixedHeight(300)
    self.setLayout(QGridLayout())
 
class Window(QWidget):
  def __init__(self):
    super().__init__(None)
    h0 = Header("Домашняя страница", 0)
    h0.clicked.connect(self.changeTab)
    h1 = Header("Выбор редакции", 1)
    h1.clicked.connect(self.changeTab)
    self.tab = []
    self.tab.append(Tab())
    self.tab[0].layout().addWidget(QLabel("текст"),0,0)
    self.tab[0].layout().addWidget(QLabel("ещё текст"),1,0)
    self.tab[0].layout().addWidget(QPushButton("кнопка"),2,0)
    self.tab.append(Tab())
    self.tab[1].layout().addWidget(QLabel("вторая вкладка"),0,0)
    hl = QHBoxLayout()
    hl.addWidget(h0)
    hl.addWidget(h1)
    vl = QVBoxLayout()
    vl.addLayout(hl)
    vl.addWidget(self.tab[0])
    vl.addWidget(self.tab[1])
    self.setLayout(vl)
    self.changeTab(0)
  def changeTab(self, index):
    for tab in self.tab:
      tab.hide()
    for i, tab in enumerate(self.tab):
      if i == index:
        tab.show()
 
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
Добавлено через 21 минуту
P.S. это вольная импровизация, не связана с предыдущим постом sdf45
0
6 / 5 / 1
Регистрация: 12.11.2019
Сообщений: 153
02.12.2021, 00:54  [ТС]
Не получается перенести подобный в готовый дизайн(я знаю, что не получается, т.к. у меня знаний не хватает).

ui_mainwindow.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# -*- coding: utf-8 -*-
 
# Form implementation generated from reading ui file '/home/A.Lapys/Документы/RedStore/mainwindow.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.
 
 
from PyQt5 import QtCore, QtGui, QtWidgets
 
 
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setEnabled(True)
        MainWindow.resize(1280, 720)
        MainWindow.setMinimumSize(QtCore.QSize(1280, 720))
        MainWindow.setMaximumSize(QtCore.QSize(1280, 720))
        MainWindow.setFocusPolicy(QtCore.Qt.WheelFocus)
        MainWindow.setStyleSheet("")
        MainWindow.setAnimated(False)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setStyleSheet("background-color:#F0F0F0;")
        self.centralwidget.setObjectName("centralwidget")
        self.header = QtWidgets.QWidget(self.centralwidget)
        self.header.setEnabled(True)
        self.header.setGeometry(QtCore.QRect(0, 0, 1280, 44))
        self.header.setStyleSheet("background-color: #E4E4E4;")
        self.header.setObjectName("header")
        self.homeButton = QtWidgets.QLabel(self.header)
        self.homeButton.setGeometry(QtCore.QRect(29, 0, 146, 44))
        font = QtGui.QFont()
        font.setFamily("Open Sans")
        font.setPointSize(10)
        self.homeButton.setFont(font)
        self.homeButton.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
        self.homeButton.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.homeButton.setAutoFillBackground(False)
        self.homeButton.setStyleSheet("color: black;\n"
"border-bottom: 2px solid #E44641;\n"
"")
        self.homeButton.setAlignment(QtCore.Qt.AlignCenter)
        self.homeButton.setWordWrap(False)
        self.homeButton.setOpenExternalLinks(False)
        self.homeButton.setObjectName("homeButton")
        self.cEditorialButton = QtWidgets.QLabel(self.header)
        self.cEditorialButton.setGeometry(QtCore.QRect(205, 0, 125, 44))
        font = QtGui.QFont()
        font.setFamily("Open Sans")
        font.setPointSize(10)
        self.cEditorialButton.setFont(font)
        self.cEditorialButton.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
        self.cEditorialButton.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.cEditorialButton.setAutoFillBackground(False)
        self.cEditorialButton.setStyleSheet("color: black;\n"
"border-bottom: 2px solid #E44641;\n"
"")
        self.cEditorialButton.setAlignment(QtCore.Qt.AlignCenter)
        self.cEditorialButton.setWordWrap(False)
        self.cEditorialButton.setOpenExternalLinks(False)
        self.cEditorialButton.setObjectName("cEditorialButton")
        self.iApplicationButton = QtWidgets.QLabel(self.header)
        self.iApplicationButton.setGeometry(QtCore.QRect(360, 0, 205, 44))
        font = QtGui.QFont()
        font.setFamily("Open Sans")
        font.setPointSize(10)
        self.iApplicationButton.setFont(font)
        self.iApplicationButton.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
        self.iApplicationButton.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.iApplicationButton.setAutoFillBackground(False)
        self.iApplicationButton.setStyleSheet("color: black;\n"
"border-bottom: 2px solid #E44641;\n"
"")
        self.iApplicationButton.setAlignment(QtCore.Qt.AlignCenter)
        self.iApplicationButton.setWordWrap(False)
        self.iApplicationButton.setOpenExternalLinks(False)
        self.iApplicationButton.setObjectName("iApplicationButton")
        self.searchButton = QtWidgets.QLabel(self.header)
        self.searchButton.setGeometry(QtCore.QRect(1123, 8, 28, 28))
        self.searchButton.setText("")
        self.searchButton.setPixmap(QtGui.QPixmap(":/mainWindow/imageRedStore/search.png"))
        self.searchButton.setObjectName("searchButton")
        self.settingsButton = QtWidgets.QLabel(self.header)
        self.settingsButton.setGeometry(QtCore.QRect(1214, 4, 36, 36))
        self.settingsButton.setText("")
        self.settingsButton.setPixmap(QtGui.QPixmap(":/mainWindow/imageRedStore/settings.png"))
        self.settingsButton.setObjectName("settingsButton")
        self.supportButton = QtWidgets.QLabel(self.header)
        self.supportButton.setGeometry(QtCore.QRect(1171, 8, 28, 28))
        self.supportButton.setStyleSheet("")
        self.supportButton.setText("")
        self.supportButton.setPixmap(QtGui.QPixmap(":/mainWindow/imageRedStore/support.png"))
        self.supportButton.setObjectName("supportButton")
        self.installationFooter = QtWidgets.QWidget(self.centralwidget)
        self.installationFooter.setEnabled(False)
        self.installationFooter.setGeometry(QtCore.QRect(0, 676, 1280, 44))
        self.installationFooter.setStyleSheet("background-color: #E4E4E4;")
        self.installationFooter.setObjectName("installationFooter")
        self.progressBar = QtWidgets.QProgressBar(self.installationFooter)
        self.progressBar.setGeometry(QtCore.QRect(0, 0, 1280, 2))
        self.progressBar.setStyleSheet("QProgressBar{\n"
"border-radius:0;\n"
"}\n"
"\n"
"QProgressBar::chunk{\n"
"background-color:#E44641;\n"
"}\n"
"")
        self.progressBar.setProperty("value", 0)
        self.progressBar.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
        self.progressBar.setTextVisible(False)
        self.progressBar.setOrientation(QtCore.Qt.Horizontal)
        self.progressBar.setInvertedAppearance(False)
        self.progressBar.setObjectName("progressBar")
        self.textInstallorDeleteLabel = QtWidgets.QLabel(self.installationFooter)
        self.textInstallorDeleteLabel.setGeometry(QtCore.QRect(0, 6, 1280, 18))
        self.textInstallorDeleteLabel.setStyleSheet("color:black;\n"
"")
        self.textInstallorDeleteLabel.setScaledContents(False)
        self.textInstallorDeleteLabel.setAlignment(QtCore.Qt.AlignCenter)
        self.textInstallorDeleteLabel.setObjectName("textInstallorDeleteLabel")
        self.progressTextLabel = QtWidgets.QLabel(self.installationFooter)
        self.progressTextLabel.setGeometry(QtCore.QRect(0, 21, 1280, 18))
        self.progressTextLabel.setStyleSheet("color:black;\n"
"background-color:transparent;\n"
"")
        self.progressTextLabel.setScaledContents(False)
        self.progressTextLabel.setAlignment(QtCore.Qt.AlignCenter)
        self.progressTextLabel.setObjectName("progressTextLabel")
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setGeometry(QtCore.QRect(0, 50, 1281, 671))
        #self.tabWidget.setMinimumSize(QtCore.QSize(1281, 0))
        self.tabWidget.setStyleSheet("border:transparent; \n"
"background-color:#F0F0F0;")
        self.tabWidget.setTabPosition(QtWidgets.QTabWidget.North)
        self.tabWidget.setTabShape(QtWidgets.QTabWidget.Rounded)
        self.tabWidget.setElideMode(QtCore.Qt.ElideNone)
        self.tabWidget.setUsesScrollButtons(False)
        self.tabWidget.setDocumentMode(False)
        self.tabWidget.setTabsClosable(False)
        self.tabWidget.setMovable(False)
        self.tabWidget.setTabBarAutoHide(False)
        self.tabWidget.setObjectName("tabWidget")
        self.home = QtWidgets.QWidget()
        self.home.setObjectName("home")
        self.tabWidget.addTab(self.home, "")
        self.iapp = QtWidgets.QWidget()
        self.iapp.setObjectName("iapp")
        self.tabWidget.addTab(self.iapp, "")
        self.installapp = QtWidgets.QWidget()
        self.installapp.setObjectName("installapp")
        self.tabWidget.addTab(self.installapp, "")
        #self.tabWidget.tabBar().hide()
 
        #qttablet переходит на задний план:
        #self.tabWidget.raise_()
        #self.header.raise_()
        #self.installationFooter.raise_()
        MainWindow.setCentralWidget(self.centralwidget)
 
        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(1)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.homeButton.setText(_translate("MainWindow", "Домашняя страница"))
        self.cEditorialButton.setText(_translate("MainWindow", "Выбор редакции"))
        self.iApplicationButton.setText(_translate("MainWindow", "Установленные приложения"))
        self.textInstallorDeleteLabel.setText(_translate("MainWindow", "textInstallorDeleteLabel"))
        self.progressTextLabel.setText(_translate("MainWindow", "progressTextLabel"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.home), _translate("MainWindow", "home"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.iapp), _translate("MainWindow", "iapp"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.installapp), _translate("MainWindow", "installapp"))
 
import resources_rc
main.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#-*- coding: utf-8 -*-
 
import PyQt5
import os
import sys
 
#from pathlib import Path
#from PySide2.QtGui import QGuiApplication
#from PySide2.QtQml import QQmlApplicationEngine
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5 import QtCore, QtGui, QtWidgets, uic
 
from ui_mainwindow import Ui_MainWindow
 
class Header(QLabel):
    clicked = pyqtSignal(int)
    def __init__(self, text, index):
        super().__init__(text)
        self.index = index
 
    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.clicked.emit(self.index)
 
class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
   
        #подключение элементов
  
 
def main():
    app = QApplication(sys.argv)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())
 
 
if __name__ == "__main__":
    main()
    
    #engine = QQmlApplicationEngine()
    #engine.load(os.fspath(Path(__file__).resolve().parent / "main.qml"))
    #if not engine.rootObjects():
    #    sys.exit(-1)
    #sys.exit(app.exec_())
0
 Аватар для kapbepucm
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,661
02.12.2021, 10:21
Цитата Сообщение от Lapys Посмотреть сообщение
Не получается перенести подобный в готовый дизайн
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
 
class Header(QtWidgets.QLabel):
    clicked = QtCore.pyqtSignal(int)
    def __init__(self, parent, index):
        super().__init__(parent)
        self.index = index
 
    def mousePressEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton:
            self.clicked.emit(self.index)
 
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setEnabled(True)
        MainWindow.resize(1280, 720)
        MainWindow.setMinimumSize(QtCore.QSize(1280, 720))
        MainWindow.setMaximumSize(QtCore.QSize(1280, 720))
        MainWindow.setFocusPolicy(QtCore.Qt.WheelFocus)
        MainWindow.setStyleSheet("")
        MainWindow.setAnimated(False)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setStyleSheet("background-color:#F0F0F0;")
        self.centralwidget.setObjectName("centralwidget")
        self.header = QtWidgets.QWidget(self.centralwidget)
        self.header.setEnabled(True)
        self.header.setGeometry(QtCore.QRect(0, 0, 1280, 44))
        self.header.setStyleSheet("background-color: #E4E4E4;")
        self.header.setObjectName("header")
        self.homeButton = Header(self.header, 0)
        self.homeButton.setGeometry(QtCore.QRect(29, 0, 146, 44))
        font = QtGui.QFont()
        font.setFamily("Open Sans")
        font.setPointSize(10)
        self.homeButton.setFont(font)
        self.homeButton.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
        self.homeButton.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.homeButton.setAutoFillBackground(False)
        self.homeButton.setStyleSheet("color: black;\n"
"border-bottom: 2px solid #E44641;\n"
"")
        self.homeButton.setAlignment(QtCore.Qt.AlignCenter)
        self.homeButton.setWordWrap(False)
        self.homeButton.setOpenExternalLinks(False)
        self.homeButton.setObjectName("homeButton")
        self.cEditorialButton = Header(self.header, 1)
        self.cEditorialButton.setGeometry(QtCore.QRect(205, 0, 125, 44))
        font = QtGui.QFont()
        font.setFamily("Open Sans")
        font.setPointSize(10)
        self.cEditorialButton.setFont(font)
        self.cEditorialButton.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
        self.cEditorialButton.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.cEditorialButton.setAutoFillBackground(False)
        self.cEditorialButton.setStyleSheet("color: black;\n"
"border-bottom: 2px solid #E44641;\n"
"")
        self.cEditorialButton.setAlignment(QtCore.Qt.AlignCenter)
        self.cEditorialButton.setWordWrap(False)
        self.cEditorialButton.setOpenExternalLinks(False)
        self.cEditorialButton.setObjectName("cEditorialButton")
        self.iApplicationButton = Header(self.header, 2)
        self.iApplicationButton.setGeometry(QtCore.QRect(360, 0, 205, 44))
        font = QtGui.QFont()
        font.setFamily("Open Sans")
        font.setPointSize(10)
        self.iApplicationButton.setFont(font)
        self.iApplicationButton.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
        self.iApplicationButton.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.iApplicationButton.setAutoFillBackground(False)
        self.iApplicationButton.setStyleSheet("color: black;\n"
"border-bottom: 2px solid #E44641;\n"
"")
        self.iApplicationButton.setAlignment(QtCore.Qt.AlignCenter)
        self.iApplicationButton.setWordWrap(False)
        self.iApplicationButton.setOpenExternalLinks(False)
        self.iApplicationButton.setObjectName("iApplicationButton")
        self.searchButton = QtWidgets.QLabel(self.header)
        self.searchButton.setGeometry(QtCore.QRect(1123, 8, 28, 28))
        self.searchButton.setText("")
        #self.searchButton.setPixmap(QtGui.QPixmap(":/mainWindow/imageRedStore/search.png"))
        self.searchButton.setObjectName("searchButton")
        self.settingsButton = QtWidgets.QLabel(self.header)
        self.settingsButton.setGeometry(QtCore.QRect(1214, 4, 36, 36))
        self.settingsButton.setText("")
        #self.settingsButton.setPixmap(QtGui.QPixmap(":/mainWindow/imageRedStore/settings.png"))
        self.settingsButton.setObjectName("settingsButton")
        self.supportButton = QtWidgets.QLabel(self.header)
        self.supportButton.setGeometry(QtCore.QRect(1171, 8, 28, 28))
        self.supportButton.setStyleSheet("")
        self.supportButton.setText("")
        #self.supportButton.setPixmap(QtGui.QPixmap(":/mainWindow/imageRedStore/support.png"))
        self.supportButton.setObjectName("supportButton")
        self.installationFooter = QtWidgets.QWidget(self.centralwidget)
        self.installationFooter.setEnabled(False)
        self.installationFooter.setGeometry(QtCore.QRect(0, 676, 1280, 44))
        self.installationFooter.setStyleSheet("background-color: #E4E4E4;")
        self.installationFooter.setObjectName("installationFooter")
        self.progressBar = QtWidgets.QProgressBar(self.installationFooter)
        self.progressBar.setGeometry(QtCore.QRect(0, 0, 1280, 2))
        self.progressBar.setStyleSheet("QProgressBar{\n"
"border-radius:0;\n"
"}\n"
"\n"
"QProgressBar::chunk{\n"
"background-color:#E44641;\n"
"}\n"
"")
        self.progressBar.setProperty("value", 0)
        self.progressBar.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
        self.progressBar.setTextVisible(False)
        self.progressBar.setOrientation(QtCore.Qt.Horizontal)
        self.progressBar.setInvertedAppearance(False)
        self.progressBar.setObjectName("progressBar")
        self.textInstallorDeleteLabel = QtWidgets.QLabel(self.installationFooter)
        self.textInstallorDeleteLabel.setGeometry(QtCore.QRect(0, 6, 1280, 18))
        self.textInstallorDeleteLabel.setStyleSheet("color:black;\n"
"")
        self.textInstallorDeleteLabel.setScaledContents(False)
        self.textInstallorDeleteLabel.setAlignment(QtCore.Qt.AlignCenter)
        self.textInstallorDeleteLabel.setObjectName("textInstallorDeleteLabel")
        self.progressTextLabel = QtWidgets.QLabel(self.installationFooter)
        self.progressTextLabel.setGeometry(QtCore.QRect(0, 21, 1280, 18))
        self.progressTextLabel.setStyleSheet("color:black;\n"
"background-color:transparent;\n"
"")
        self.progressTextLabel.setScaledContents(False)
        self.progressTextLabel.setAlignment(QtCore.Qt.AlignCenter)
        self.progressTextLabel.setObjectName("progressTextLabel")
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setGeometry(QtCore.QRect(0, 50, 1281, 671))
        #self.tabWidget.setMinimumSize(QtCore.QSize(1281, 0))
        self.tabWidget.setStyleSheet("border:transparent; \n"
"background-color:#F0F0F0;")
        self.tabWidget.setTabPosition(QtWidgets.QTabWidget.North)
        self.tabWidget.setTabShape(QtWidgets.QTabWidget.Rounded)
        self.tabWidget.setElideMode(QtCore.Qt.ElideNone)
        self.tabWidget.setUsesScrollButtons(False)
        self.tabWidget.setDocumentMode(False)
        self.tabWidget.setTabsClosable(False)
        self.tabWidget.setMovable(False)
        self.tabWidget.setTabBarAutoHide(False)
        self.tabWidget.setObjectName("tabWidget")
        self.home = QtWidgets.QWidget()
        self.home.setObjectName("home")
        self.tabWidget.addTab(self.home, "")
        self.iapp = QtWidgets.QWidget()
        self.iapp.setObjectName("iapp")
        self.tabWidget.addTab(self.iapp, "")
        self.installapp = QtWidgets.QWidget()
        self.installapp.setObjectName("installapp")
        self.tabWidget.addTab(self.installapp, "")
        MainWindow.setCentralWidget(self.centralwidget)
        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(1)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.homeButton.clicked.connect(self.tabWidget.setCurrentIndex)
        self.cEditorialButton.clicked.connect(self.tabWidget.setCurrentIndex)
        self.iApplicationButton.clicked.connect(self.tabWidget.setCurrentIndex)
 
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.homeButton.setText(_translate("MainWindow", "Домашняя страница"))
        self.cEditorialButton.setText(_translate("MainWindow", "Выбор редакции"))
        self.iApplicationButton.setText(_translate("MainWindow", "Установленные приложения"))
        self.textInstallorDeleteLabel.setText(_translate("MainWindow", "textInstallorDeleteLabel"))
        self.progressTextLabel.setText(_translate("MainWindow", "progressTextLabel"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.home), _translate("MainWindow", "home"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.iapp), _translate("MainWindow", "iapp"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.installapp), _translate("MainWindow", "installapp"))
 
class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        #подключение элементов
 
def main():
    app = QtWidgets.QApplication(sys.argv)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())
 
if __name__ == "__main__":
    main()
1
6 / 5 / 1
Регистрация: 12.11.2019
Сообщений: 153
02.12.2021, 11:09  [ТС]
Спасибо. Вопрос такой, а могу ли я вызвать из ui.py класс, который в main.py, при условии, что я в main.py уже импортирую класс(который мне использую в main.py) из ui.py, т.е. получается цикличность, если просто написать from файл import класс..
0
 Аватар для kapbepucm
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,661
02.12.2021, 12:27
python не позволит циклический импорт, если всётаки есть надобность из ui.py обратиться к чемуто, что находится в main.py то, как вариант, тут подходят qtшные сигналы-слоты
0
6 / 5 / 1
Регистрация: 12.11.2019
Сообщений: 153
02.12.2021, 14:58  [ТС]
А правильным считается перенести весь код дизайна в main.py?
0
 Аватар для kapbepucm
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,661
02.12.2021, 15:23
Цитата Сообщение от Lapys Посмотреть сообщение
А правильным считается перенести весь код дизайна в main.py?
Если проект на строк 10, я не делю Но отделять правильнее, хотябы в плане читабельности.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.12.2021, 15:23

Как переключаться между внутренними вкладками свайпом слева направо?
Всем привет! Во первых спасибо этому форуму и людям отвечающим в темах obj c! Много хороших ответов и тем! Товарищи, посоветуйте,...

Как переключаться между шаблонами
Доброго времени суток, вопрос такой. Я изменил под себя тему, настроил главную, все исходники себе оставил теперь хочу создать отдельный...

Переключаться между листами Excel
Как можно через делфи переключаться между листами в открытом Ексель ? Т.е. проводятся какие то вычисления, и допустим итог этих...

Как переключаться между фрагментами
Добрые люди. имеется одна активити . в нём контейнер и одна кнопка снизу. когда нажимаю на кнопку контейнер показывает первый фрагмент. в...

Как переключаться между Ubuntu и Windows 7?
здравствуйте. Вчера поставил убунту поверх винды, пользуясь данным руководством: http://www.ithowto.ru/667-ustanovka-ubuntu-12-04.html...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru