Найти - Пользователи
Полная версия: создание GUI приложения на python
Начало » GUI » создание GUI приложения на python
1
Mark28
Добрый день, форумчане! Извиняюсь сразу за глупый вопрос, уже 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()
DOOMer
Как-то так:
 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_())
Mark28
DOOMer
Как-то так:
спасибо большое!!! какая-то ошибка выходит, буду разбираться, буду очень благодарен, если подскажите!
DOOMer
Ошибка “AttrubuteError: ‘UI_MainWindow’ object has no attribute ‘btn_search’” - имена объекто пользовательского интерфеса (кнопки, поля ввода, etc) в вашем .ui файле не совпадают, с теми, которые в моём коде-примере.

Открывайте ваш .ui файл в QtDesigner-е, и смотрите какие значения у свойства “objectName” у ваших кнопок и других UI-элементов (в моём коде две QPushButton, QLable, QLineEdit - все что в self.ui.*).

p.s. Трейсбэки ошибок лучше всё-таки выкладывать в виде текста, а не скриншота (на будущее).
Mark28
DOOMer
Ошибка “AttrubuteError: ‘UI_MainWindow’ object has no attribute ‘btn_search’” - имена объекто пользовательского интерфеса (кнопки, поля ввода, etc) в вашем .ui файле не совпадают, с теми, которые в моём коде-примере.Открывайте ваш .ui файл в QtDesigner-е, и смотрите какие значения у свойства “objectName” у ваших кнопок и других UI-элементов (в моём коде две QPushButton, QLable, QLineEdit - все что в self.ui.*).p.s. Трейсбэки ошибок лучше всё-таки выкладывать в виде текста, а не скриншота (на будущее).


Спасибо большое !!!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB