Форум сайта python.su
Добрый день, форумчане! Извиняюсь сразу за глупый вопрос, уже 2 месяца не могу решить проблему.
На ПК стоит Windows 7, пользуюсь python 3.8 (32 bit), QT Designer 5.14.2
Хочу создать приложение, в котором при вводе страны программа выдала континент, на котором эта страна находится. Не могу понять, как привязать логику к конкретной кнопке, скриншоты прилагаю. Спасибо большое!!!!
import sys
from PyQt5 import QtWidgets
import design
class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
country = input (“какая страна?”)
if country == “Россия” or “Украина” or “Беларусь” or “Латвия” or “Литва” or “Эстония” or “Финляндия” or “Швеция” or “Норвегия” or “Дания” or “Германия” or “Польша” or “Австрия” or “Чехия” or “Словакия”:
print (“Европа”)
elif country == “Канада” or “США” or “Мексика”:
print (“Северная Америка”)
elif country == “Чад” or “ЮАР”, “Эфиопия” or “Кения”:
print (“Африка”)
else:
print (“Введите другую страну”)
def main():
app = QtWidgets.QApplication(sys.argv)
window = ExampleApp()
window.show()
app.exec_()
if __name__ == ‘__main__’:
main()
Прикреплённый файлы:
Безымянный.png (23,0 KБ)
Офлайн
Как-то так:
import sys from PyQt5.QtWidgets import QApplication, QMainWindow from test_design import Ui_MainWindow class ExampleApp(QMainWindow): # списки стран по континентам (под каждый континент - отдельный список без заморочек) europe = ["россия", "украина", "беларусь", "нолдова", ] # add more if need asia = ["япония", "китай", "корея", ] # add more if need north_america = ["сша", "канада", "мексика", ] # add more if need def __init__(self): super(ExampleApp, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) # соединяем событие "нажатие" у кнопок с соответтсвующими слотами self.ui.btn_search.clicked.connect(self.search_country) self.ui.btn_clear.clicked.connect(self.clear_search_field) def search_country(self): """ Функция, вызываемая по нажатию кнопки поиска """ query = self.ui.edit_search.text() if query in self.europe: self.ui.label_result.setText("Европа") if query in self.asia: self.ui.label_result.setText("Азия") if query in self.north_america: self.ui.label_result.setText("Северная Америка") else: self.ui.label_result.setText("Ничего не найдено") def clear_search_field(self): """ Функция очистки поля ввода и лабела результата """ self.ui.edit_search.setText("") self.ui.label_result.setText("") if __name__ == '__main__': app = QApplication(sys.argv) w = ExampleApp() w.show() sys.exit(app.exec_())
Отредактировано DOOMer (Ноя. 9, 2020 00:33:14)
Офлайн
DOOMerспасибо большое!!! какая-то ошибка выходит, буду разбираться, буду очень благодарен, если подскажите!
Как-то так:
Прикреплённый файлы:
фото.png (30,1 KБ)
Офлайн
Ошибка “AttrubuteError: ‘UI_MainWindow’ object has no attribute ‘btn_search’” - имена объекто пользовательского интерфеса (кнопки, поля ввода, etc) в вашем .ui файле не совпадают, с теми, которые в моём коде-примере.
Открывайте ваш .ui файл в QtDesigner-е, и смотрите какие значения у свойства “objectName” у ваших кнопок и других UI-элементов (в моём коде две QPushButton, QLable, QLineEdit - все что в self.ui.*).
p.s. Трейсбэки ошибок лучше всё-таки выкладывать в виде текста, а не скриншота (на будущее).
Офлайн
DOOMer
Ошибка “AttrubuteError: ‘UI_MainWindow’ object has no attribute ‘btn_search’” - имена объекто пользовательского интерфеса (кнопки, поля ввода, etc) в вашем .ui файле не совпадают, с теми, которые в моём коде-примере.Открывайте ваш .ui файл в QtDesigner-е, и смотрите какие значения у свойства “objectName” у ваших кнопок и других UI-элементов (в моём коде две QPushButton, QLable, QLineEdit - все что в self.ui.*).p.s. Трейсбэки ошибок лучше всё-таки выкладывать в виде текста, а не скриншота (на будущее).
Офлайн