Нажатие кнопки pyqt5 не работает из моего второго окна - PullRequest
2 голосов
/ 08 апреля 2020

Я застрял в функции вызова из кнопки. в моем проекте:

  1. app.py , который является основным файлом для запуска проекта.
  2. ui_mainWindow.py является файл состоит из виджета со вкладкой.
  3. Account.py - преобразованный файл из account.ui
  4. main_Account.py - файл, в который я импортирую Файл Account.py.
  5. account_handler.py - это файл, состоящий из функций.

теперь, когда я запускаю свой проект с помощью app.py, он покажет все содержимое файла ui_mainWindow.py. Теперь, если я выберу вкладку аккаунта из tabwidget, он покажет все содержимое mainAccount.py. Теперь, если я нажму на кнопку из mainAccount.py, функция будет вызываться из account_handler.py.

все работает нормально, но пока кнопка ничего не происходит.

это мой предыдущий пост: PyQt5 pu sh Метод кнопки вызывается из отдельного python файла , я следую этому отдельно и это работает нормально, но в моем проекте тот же код не работает. Может кто-нибудь сказать мне, где я не прав!

app.py

from importlib import reload
import PyQt5.QtCore as QtCore
from PyQt5.uic import loadUi
from PyQt5.QtWidgets import QMainWindow,QApplication
import sys
import files.interfaces.ui_mainWindow

import files.interfaces.dashboard
reload(files.interfaces.dashboard)

import files.main_Interfaces.mainAccount
reload(files.main_Interfaces.mainAccount)

import files.interfaces.account2
reload(files.interfaces.account2)

class MainWindow(QMainWindow, files.interfaces.ui_mainWindow.Ui_MainWindow):

    def __init__(self):

        # Base class
        QMainWindow.__init__(self)

        self.ui = files.interfaces.ui_mainWindow.Ui_MainWindow()
        self.ui.setupUi(self)
        self.setWindowTitle("PORTFOLIO ACCOUNTING")

        # import tab1
        self.TabWidget = QtWidgets.QWidget()
        ui = files.interfaces.dashboard2.Ui_Form()
        ui.setupUi(self.TabWidget)
        self.ui.tabWidget.insertTab(0, self.TabWidget, "Dashboard")

        # import tab2
        self.TabWidget = QtWidgets.QWidget()
        ui = files.main_Interfaces.mainAccount.MainWindow()
        ui.setupUi(self.TabWidget)
        self.ui.tabWidget.insertTab(1, self.TabWidget, "Account")

def main():
    app = QtWidgets.QApplication(sys.argv)
    app.setApplicationName("Portfolio Accounting")
    application = MainWindow()
    application.show()
    app.exec_()

if __name__ == '__main__':
    main()

main_Account.py

from PyQt5 import QtCore, QtGui, QtWidgets
from files.interfaces.account import Ui_Form
from event_handler.account_EventHndler import function2

class MainWindow(QtWidgets.QMainWindow,Ui_Form):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)

        self.pushButton_2.clicked.connect(function1)


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

account_handler.py

def function1():                                
    print("function called")

1 Ответ

0 голосов
/ 08 апреля 2020

Ваш код немного сбивает с толку, так как вы используете одни и те же имена классов в разных модулях, и есть несоответствия между именами импортируемых модулей и именами предоставленных вами файлов .py, но я предполагаю, что files.main_Interfaces.mainAccount.MainWindow относится к mainWindow в main_Account.py. В этом случае в app.MainWindow.__init__ tab2, вероятно, должно быть что-то вроде

# import tab2
self.TabWidget = files.main_Interfaces.mainAccount.MainWindow()
self.ui.tabWidget.insertTab(1, self.TabWidget, "Account")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...