Как получить значение из combobox python
Перейти к содержимому

Как получить значение из combobox python

  • автор:

Как получить выбранное значение QComboBox в Python?

Всем привет. Объясните мне пожалуйста, как работает обращение к QComboBox и получение от него выбранного значения?

from PyQt5 import QtCore, QtGui, QtWidgets import sys from gui import Ui_MainWindow # Здесь подключается UI формы app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() comboValue = 0 def installer(): - - - - # Здесь я хочу проверить выбранное значение ui.comboBox и записать в переменную comboValue = 1 - - - - print(comboValue) ui.pushButton_search.clicked.connect( installer ) # Нажатие на кнопку установить

Уже долго пытаюсь понять как работают эти сигналы и не понимаю, приведите пожалуйста простейший пример. Заранее благодарю!

  • Вопрос задан более трёх лет назад
  • 12493 просмотра

4 комментария

Простой 4 комментария

Как получить значение из combobox python

Виджет Combobox представляет выпадающий список, из которого пользователь может выбрать один элемент. Фактически он представляет комбинацию виджетов Entry и Listbox.

Основные параметры конструктора Combobox:

  • values : список строк для отображения в Combobox
  • background : фоновый цвет
  • cursor : курсор указателя мыши при наведении на текстовое поле
  • foreground : цвет текста
  • font : шрифт текста
  • justify : устанавливает выравнивание текста. Значение LEFT выравнивает текст по левому краю, CENTER — по центру, RIGHT — по правому краю
  • show : задает маску для вводимых символов
  • state : состояние элемента, может принимать значения NORMAL (по умолчанию) и DISABLED
  • textvariable : устанавливает привязку к элементу StringVar
  • height : высота элемента
  • width : ширина элемента

Определим простейший выпадающий список:

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") languages = ["Python", "C#", "Java", "JavaScript"] combobox = ttk.Combobox(values=languages) combobox.pack(anchor=NW, padx=6, pady=6) root.mainloop()

Здесь для элемента combobox в качестве источника значений устанавливается список languages:

Combobox в Tkinter и Python

С помощью параметра textvariable мы можем установить привязку к выбранному в Combobox значению:

from cProfile import label from cgitb import text from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") languages = ["Python", "C#", "Java", "JavaScript"] # по умолчанию будет выбран первый элемент из languages languages_var = StringVar(value=languages[0]) label = ttk.Label(textvariable=languages_var) label.pack(anchor=NW, padx=6, pady=6) combobox = ttk.Combobox(textvariable=languages_var, values=languages) combobox.pack(anchor=NW, padx=6, pady=6) print(combobox.get()) root.mainloop()

Здесь выбранный в Combobox элемент привязан к переменной languages_var. По умолчанию выбран первый элемент списка languages. Для отслеживания изменения выбора определена метка Label, которая отображает выбранный элемент:

Получение выбранного элемента в Combobox в Tkinter и Python

По умолчанию мы можем ввести в текстовое поле в Combobox любое значение, даже то, которого нет в списке. Такое поведение не всегда может быть удобно. В этом случае мы можем установить для виджета состояние только для чтения, передав параметру «state» значение «readonly»:

combobox = ttk.Combobox(textvariable=languages_var, values=languages, state="readonly")

Выбранный элемент можно получить с помощью метода get() класса Combobox

selection = combobox.get()

либо с помощью метода get() привязанной переменной

selection = languages_var.get()

Для установки нового значения можно использовать метод set() :

languages_var.set(new_value) combobox.set(new_value)

Для установки по индексу из привязанного набора значений также можно использовать метод current(newindex) , где с помощью параметра newindex задается индекс выбранного значения. Например, выберем второй элемент:

combobox.current(1)

Отслеживание выбора значения

Для обработки выбора элементов в Combobox необходимо прикрепить функцию обработки к событию > с помощью метода bind :

combobox.bind(">", функция_обработки)

Например, динамически обработаем выбор в Combobox:

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") def selected(event): # получаем выделенный элемент selection = combobox.get() print(selection) label["text"] = f"вы выбрали: " languages = ["Python", "C#", "Java", "JavaScript"] label = ttk.Label() label.pack(anchor=NW, fill=X, padx=5, pady=5) combobox = ttk.Combobox(values=languages, state="readonly") combobox.pack(anchor=NW, fill=X, padx=5, pady=5) combobox.bind(">", selected) root.mainloop()

В данном случае при изменении выбора в списке срабатывает функция selected . Функция должна принимать один параметр, который несет информацию о событии — здесь это параметр event. Хотя в данном случае он никак не используется.

В самой функции получаем выбранный элемент и выводит соответствующую информацию на метку Label.

Python-сообщество

[RSS Feed]

  • Начало
  • » GUI
  • » pyqt5 получить значение QComboBox

#1 Авг. 1, 2020 12:36:52

Pacifist Зарегистрирован: 2020-01-10 Сообщения: 25 Репутация: 0 Профиль Отправить e-mail

pyqt5 получить значение QComboBox

Как в label получить значение из comboBox (словаря)? При выборе в comboBox Яблоко — в label должно быть 5

import sys from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(509, 137) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.comboBox = QtWidgets.QComboBox(self.centralwidget) self.comboBox.setGeometry(QtCore.QRect(40, 50, 171, 22)) self.comboBox.setObjectName("comboBox") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(320, 50, 121, 21)) self.label.setStyleSheet("background-color: rgb(110, 166, 255);") self.label.setText("") self.label.setObjectName("label") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) list_name = 'Яблоко': 5, 'Дыня': 6, 'Груша': 7, 'Вишня': 9> class Proba(QtWidgets.QMainWindow): def __init__(self): super(Proba, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.comboBox.addItems(list_name) value = self.ui.comboBox.currentData() self.ui.label.setText(str(value)) app = QtWidgets.QApplication([]) application = Proba() application.show() sys.exit(app.exec()) 

#2 Авг. 1, 2020 13:36:56

rami Зарегистрирован: 2018-01-08 Сообщения: 279 Репутация: 71 Профиль Отправить e-mail

pyqt5 получить значение QComboBox

class Proba(QtWidgets.QMainWindow): def __init__(self): super(Proba, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.comboBox.addItems(list_name) self.ui.comboBox.currentIndexChanged[str].connect(self.text_to_label) def text_to_label(self, item_selected): self.ui.label.setText(str(list_name[item_selected])) 

Остальное как у вас.

Выпадающий список с Tkinter и Python

Язык Python имеет множество графических библиотек. Одной из них является Tkinter. И в сегодняшней статье мы рассмотрим как создать раскрывающийся список с Python и Tkinter, а также выведем индексы выбранных элементов в графическое окно.

Если вы хотите создать раскрывающийся список элементов и разрешить пользователю выбирать элементы списка, вы можете использовать виджет Combobox. Виджет Combobox позволяет создать выпадающий список, в котором можно мгновенно выбрать список элементов. Однако, если вы хотите получить индекс выбранных элементов в виджете со списком, вы можете использовать метод get(). Метод get() возвращает целое число выбранного элемента, известное как индекс элемента.

Давайте возьмем пример, чтобы увидеть, как это работает. В этом примере мы создали список дней недели в раскрывающемся списке, и всякий раз, когда пользователь выбирает день из раскрывающегося списка, он будет печатать и отображать индекс выбранного элемента в виджете «Label». Чтобы напечатать индекс, мы можем объединить строку, приведя данный индекс к строке.

from tkinter import *
from tkinter import ttk

# Создайте экземпляр фрейма или окна tkinter
window = Tk()

# Установить размер окна
window.geometry(«700×350»)

# Создайте функцию для очистки поля со списком
def clear_combobox():
combobox.set(»)

# Определить кортеж дней
days= (‘Понедельник’,’Вторник’,’Среда’,’Четверг’,’Пятница’,’Суббота’,’Воскресенье’)

# Функция для печати индекса выбранной опции в Combobox
def callback(*arg):
Label(window, text = ‘Индекс равен’ + str(combobox.current()) + ‘ для ‘ + ‘ ‘ + str(var.get()), font = (‘Helvetica 12’) ).pack()

# Создайте виджет со списком
var = StringVar()
combobox = ttk.Combobox(window, textvariable = var)
combobox[‘values’] = days
combobox[‘state’] = ‘readonly’
combobox.pack(fill=’x’,padx= 5, pady=5)

# Установите трассировку для данной переменной
var.trace(‘w’, callback)

# Создайте кнопку, чтобы очистить выбранное текстовое значение поля со списком
button = Button(window, text = ‘очистить’, command = clear_combobox)
button.pack()

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

Изображение

Таким образом, с помощью Tkinter и Python, мы создали выпадающий список дней недели.

Создано 16.08.2022 09:50:34

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2024 Русаков Михаил Юрьевич. Все права защищены.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *