Как в PyQt5 поменять название и иконки окон, вызываемых из другого окна?
Хочу поменять иконки названия окон, с главным получилось, но при вызове других не получается.
Главное окно: mintro.py
При вызове окон из главного у них дефолтный "Dialog" и иконка: (my_weathshow.py)
(my_bincalc.py):
Если запускать my_bincalc.py и my_weathshow.py отдельно, то название и иконка меняются.
my_bincalc.py
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QIcon
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(452, 360)
Dialog.setStyleSheet("background-color:#e6fad2;\n"
"")
self.lineEdit = QtWidgets.QLineEdit(Dialog)
self.lineEdit.setGeometry(QtCore.QRect(10, 70, 381, 31))
self.lineEdit.setStyleSheet("color:#1db823;\n"
"font: 10pt \"Tw Cen MT Condensed Extra Bold\";\n"
"background-color:#0a2c40;\n"
"border:none;")
self.lineEdit.setObjectName("lineEdit")
self.pushButton = QtWidgets.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(10, 130, 111, 31))
self.pushButton.setStyleSheet("\n"
"QPushButton {\n"
"\n"
" color:#f1f52a;\n"
" font: 8pt \"MS Serif\";\n"
" font: 11pt \"MS Shell Dlg 2\";\n"
" background-color:#822af5;\n"
" border:none;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color:silver;\n"
"}\n"
"\n"
"QPushButton:pressed {\n"
" background-color:red;\n"
"}\n"
"\n"
"\n"
"")
self.pushButton.setObjectName("pushButton")
self.lineEdit_2 = QtWidgets.QLineEdit(Dialog)
self.lineEdit_2.setGeometry(QtCore.QRect(10, 240, 381, 31))
self.lineEdit_2.setStyleSheet("color:#1db823;\n"
"font: 10pt \"Tw Cen MT Condensed Extra Bold\";\n"
"background-color:#0a2c40;\n"
"border:none;")
self.lineEdit_2.setObjectName("lineEdit_2")
self.pushButton_2 = QtWidgets.QPushButton(Dialog)
self.pushButton_2.setGeometry(QtCore.QRect(10, 300, 111, 31))
self.pushButton_2.setStyleSheet("\n"
"QPushButton {\n"
"\n"
" color:#f1f52a;\n"
" font: 8pt \"MS Serif\";\n"
" font: 11pt \"MS Shell Dlg 2\";\n"
" background-color:#822af5;\n"
" border:none;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color:silver;\n"
"}\n"
"\n"
"QPushButton:pressed {\n"
" background-color:red;\n"
"}\n"
"\n"
"")
self.pushButton_2.setObjectName("pushButton_2")
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(20, 20, 401, 31))
self.label.setStyleSheet("font: 9pt \"MV Boli\";")
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(Dialog)
self.label_2.setGeometry(QtCore.QRect(20, 190, 411, 31))
self.label_2.setStyleSheet("font: 9pt \"MV Boli\";")
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(Dialog)
self.label_3.setGeometry(QtCore.QRect(156, 282, 291, 61))
self.label_3.setText("")
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(Dialog)
self.label_4.setGeometry(QtCore.QRect(156, 112, 291, 61))
self.label_4.setText("")
self.label_4.setObjectName("label_4")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QtWidgets.QApplication.translate("Dialog", "Dialog", None, -1))
self.pushButton.setText(QtWidgets.QApplication.translate("Dialog", "Преобразовать", None, -1))
self.pushButton_2.setText(QtWidgets.QApplication.translate("Dialog", "Преобразовать", None, -1))
self.label.setText(QtWidgets.QApplication.translate("Dialog", " Перевести из десятичной системы исчисления в двоичную:", None, -1))
self.label_2.setText(QtWidgets.QApplication.translate("Dialog", " Перевести из двоичной системы исчисления в десятичную:", None, -1))
class Bincalc(QtWidgets.QDialog, Ui_Dialog):
def __init__(self, parent=None):
super(Bincalc, self).__init__(parent)
self.setupUi(self)
self.pushButton.clicked.connect(self.binarik)
self.pushButton_2.clicked.connect(self.binarik_2)
def binarik(self):
num = int(self.lineEdit.text())
newNum = ''
while num > 0:
newNum = str(num % 2) + newNum
num //= 2
self.label_4.setText(newNum)
def binarik_2(self):
a = self.lineEdit_2.text()
def underdef(digit):
length = len(digit)
helpdig = 0
for i in range(0, int(length)):
helpdig = helpdig + int(digit[i]) * (2**(int(length) - i - 1))
return helpdig
self.label_3.setText(str(underdef(a)))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = Bincalc()
w.show()
w.setWindowTitle('Бинарный калькулятор')
w.setWindowIcon(QIcon('knif.ico'))
sys.exit(app.exec_())
my_weathshow.py
from PyQt5 import QtCore, QtGui, QtWidgets
import pyowm
from PyQt5.QtGui import QIcon
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(451, 363)
Dialog.setStyleSheet("background-color:#90d5fc;")
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(90, 10, 251, 51))
self.label.setStyleSheet("font: 9pt \"MV Boli\";")
self.label.setObjectName("label")
self.pushButton = QtWidgets.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(260, 130, 141, 51))
self.pushButton.setStyleSheet("QPushButton {\n"
"color:#2e0ff7;\n"
"background-color:#83f70f;\n"
"border:none;\n"
"font: 12pt \"Niagara Engraved\";\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color:silver;\n"
"}\n"
"\n"
"QPushButton:pressed {\n"
" background-color:red;\n"
"}\n"
"")
self.pushButton.setObjectName("pushButton")
self.lineEdit = QtWidgets.QLineEdit(Dialog)
self.lineEdit.setGeometry(QtCore.QRect(22, 70, 381, 41))
self.lineEdit.setStyleSheet("color:#404dc2;\n"
"border:none;\n"
"background:#77a17b;\n"
"font: 15pt \"Nirmala UI\";")
self.lineEdit.setObjectName("lineEdit")
self.label_2 = QtWidgets.QLabel(Dialog)
self.label_2.setGeometry(QtCore.QRect(10, 190, 431, 51))
self.label_2.setStyleSheet("color:#db145d;\n"
"font: 75 italic 12pt \"MS Sans Serif\";")
self.label_2.setText("")
self.label_2.setTextFormat(QtCore.Qt.PlainText)
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(Dialog)
self.label_3.setGeometry(QtCore.QRect(6, 240, 441, 51))
self.label_3.setStyleSheet("color:#db145d;\n"
"font: 75 italic 12pt \"MS Sans Serif\";")
self.label_3.setText("")
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(Dialog)
self.label_4.setGeometry(QtCore.QRect(6, 292, 441, 51))
self.label_4.setStyleSheet("color:#db145d;\n"
"font: 75 italic 12pt \"MS Sans Serif\";")
self.label_4.setText("")
self.label_4.setObjectName("label_4")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QtWidgets.QApplication.translate("Dialog", "Dialog", None, -1))
self.label.setText(QtWidgets.QApplication.translate("Dialog", "Введите город, чтобы узнать погоду:", None, -1))
self.pushButton.setText(QtWidgets.QApplication.translate("Dialog", "Узнать погоду", None, -1))
class Weathshow(QtWidgets.QDialog, Ui_Dialog):
def __init__(self, parent=None):
super(Weathshow, self).__init__(parent)
self.setupUi(self)
self.pushButton.clicked.connect(self.get_weather_city)
def get_weather_city(self):
owm = pyowm.OWM('API key', language = "ru")
place = self.lineEdit.text()
observation = owm.weather_at_place(place)
w = observation.get_weather()
temper = w.get_temperature('celsius')['temp']
self.label_2.setText(f"Температура сейчас {temper} по Цельсию.")
self.label_3.setText( f"В городе {place} сейчаc {w.get_detailed_status()}.")
if temper < 10:
self.label_4.setText( f"На улице довольно холодно: одевайтесь тепло." )
elif temper < 20:
self.label_4.setText( f"На улице холодно: одевайтесь потеплее." )
else:
self.label_4.setText( f"На улице тепло: одевайтесь свободно." )
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
m = Weathshow()
m.show()
m.setWindowTitle('Узнать погоду')
m.setWindowIcon(QIcon('knif.ico'))
sys.exit(app.exec_())
mintro.py
from PyQt5 import QtCore, QtGui, QtWidgets
from my_bincalc import Bincalc
from my_weathshow import Weathshow
from PyQt5.QtGui import QIcon
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(371, 300)
Dialog.setStyleSheet("background-color:#8430b8;")
self.pushButton = QtWidgets.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(30, 160, 311, 51))
self.pushButton.setStyleSheet("color:#d7e535;\n"
"font: 14pt \"Onyx\";\n"
"background-color:#494f8a;")
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(Dialog)
self.pushButton_2.setGeometry(QtCore.QRect(30, 220, 311, 51))
self.pushButton_2.setStyleSheet("color:#e01414;\n"
"font: 14pt \"Onyx\";\n"
"background-color:#dff022;")
self.pushButton_2.setObjectName("pushButton_2")
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(0, 30, 371, 51))
self.label.setStyleSheet("color:#22f70f;\n"
"font: 8pt \"Playbill\";\n"
"border:none;\n"
"")
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(Dialog)
self.label_2.setGeometry(QtCore.QRect(30, 70, 321, 81))
self.label_2.setStyleSheet("font: 11pt \"MV Boli\";\n"
"")
self.label_2.setObjectName("label_2")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QtWidgets.QApplication.translate("Dialog", "Dialog", None, -1))
self.pushButton.setText(QtWidgets.QApplication.translate("Dialog", "Бинарный калькулятор", None, -1))
self.pushButton_2.setText(QtWidgets.QApplication.translate("Dialog", "Узнать погоду в городе", None, -1))
self.label.setText(QtWidgets.QApplication.translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt; color:#ff0000;\">SWISS </span><span style=\" font-size:36pt; color:#ffffff;\">KNIFE </span><span style=\" font-size:12pt;\">v 1.0</span></p><p><span style=\" font-size:36pt;\"><br/></span></p><p align=\"center\"><span style=\" font-size:36pt;\"><br/></span></p></body></html>", None, -1))
self.label_2.setText(QtWidgets.QApplication.translate("Dialog", "Выберите одну из предложенных функций:", None, -1))
class Dialog(QtWidgets.QDialog, Ui_Dialog):
def __init__(self, parent=None):
super(Dialog, self).__init__(parent)
self.setupUi(self)
self.pushButton.clicked.connect(self.bincalc)
self.pushButton_2.clicked.connect(self.weathshow)
def bincalc(self):
self.bincalc = Bincalc()
self.bincalc.show()
def weathshow(self):
self.weathshow = Weathshow()
self.weathshow.show()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = Dialog()
w.show()
w.setWindowTitle('Swiss Knife v.1.0')
w.setWindowIcon(QIcon('knif.ico'))
sys.exit(app.exec_())
Ответы (1 шт):
вы должны понимать, что при импорте, например from my_bincalc import Bincalc вы по сути импортируете только класс Bincalc. То что находится ниже if __name__ == "__main__": не выполняется.
Поэтому у вас есть два варианта. Первый, который я привел в примере. Второй, добавить строки: self.setWindowTitle('Бинарный калькулятор') и self.setWindowIcon(QIcon('knif.ico')) в конструктор класса __init__ , в данном случае Bincalc после строки self.setupUi(self).
Например так:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QIcon
from my_bincalc import Bincalc
from my_weathshow import Weathshow
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(371, 300)
Dialog.setStyleSheet("background-color:#8430b8;")
self.pushButton = QtWidgets.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(30, 160, 311, 51))
self.pushButton.setStyleSheet("color:#d7e535;\n"
"font: 14pt \"Onyx\";\n"
"background-color:#494f8a;")
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(Dialog)
self.pushButton_2.setGeometry(QtCore.QRect(30, 220, 311, 51))
self.pushButton_2.setStyleSheet("color:#e01414;\n"
"font: 14pt \"Onyx\";\n"
"background-color:#dff022;")
self.pushButton_2.setObjectName("pushButton_2")
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(0, 30, 371, 51))
self.label.setStyleSheet("color:#22f70f;\n"
"font: 8pt \"Playbill\";\n"
"border:none;\n"
"")
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(Dialog)
self.label_2.setGeometry(QtCore.QRect(30, 70, 321, 81))
self.label_2.setStyleSheet("font: 11pt \"MV Boli\";\n"
"")
self.label_2.setObjectName("label_2")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QtWidgets.QApplication.translate("Dialog", "Dialog", None, -1))
self.pushButton.setText(QtWidgets.QApplication.translate("Dialog", "Бинарный калькулятор", None, -1))
self.pushButton_2.setText(QtWidgets.QApplication.translate("Dialog", "Узнать погоду в городе", None, -1))
self.label.setText(QtWidgets.QApplication.translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:36pt; color:#ff0000;\">SWISS </span><span style=\" font-size:36pt; color:#ffffff;\">KNIFE </span><span style=\" font-size:12pt;\">v 1.0</span></p><p><span style=\" font-size:36pt;\"><br/></span></p><p align=\"center\"><span style=\" font-size:36pt;\"><br/></span></p></body></html>", None, -1))
self.label_2.setText(QtWidgets.QApplication.translate("Dialog", "Выберите одну из предложенных функций:", None, -1))
class Dialog(QtWidgets.QDialog, Ui_Dialog):
def __init__(self, parent=None):
super(Dialog, self).__init__(parent)
self.setupUi(self)
self.pushButton.clicked.connect(self.bincalc)
self.pushButton_2.clicked.connect(self.weathshow)
def bincalc(self):
self.bincalc = Bincalc()
self.bincalc.setWindowTitle('Бинарный калькулятор') # +++
self.bincalc.setWindowIcon(QIcon('knif.ico')) # +++
self.bincalc.show()
def weathshow(self):
self.weathshow = Weathshow()
self.weathshow.setWindowTitle('Узнать погоду') # +++
self.weathshow.setWindowIcon(QIcon('knif.ico')) # +++
self.weathshow.show()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = Dialog()
w.show()
w.setWindowTitle('Swiss Knife v.1.0')
w.setWindowIcon(QIcon('knif.ico'))
sys.exit(app.exec_())



