Я смог загрузить Qcombobox из SQLite3 DB, но не смог загрузить зависимый 2 -й Qcombobox после выбора в первом, мысли?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Я смог загрузить Qcombobox из SQLite3 DB, но не смог загрузить зависимый 2 -й Qcombobox после выбора в первом, мысли?

Сообщение Anonymous »

Неважно, я обнаружил, что «%s» не будет работать с SQLite3, это должно быть «?». Вопрос может быть закрыт. Когда окно открывается, я загружаю различные имена в CB1. Когда я выбираю имя в Combo1, текущий индекс изменяется, что приводит к запуску «fill_cb2», которые должны загружать различные адреса, на которые ссылается отдельное имя в CB1. , 'от cur.execute я не получаю ошибок, а CB2 не получает никаких данных из базы данных. Если я вставлю его обратно и запускаю его, я получу код выхода -1073740791, и окно никогда не откроется. < /P>
from PyQt5.QtCore import QDate, Qt
from PyQt5.QtWidgets import (QLabel, QLineEdit,
QPushButton, QDateEdit,
QWidget, QHBoxLayout, QComboBox,
QVBoxLayout,)
import sqlite3

class Customer(QWidget):
def __init__(self, menu):

super().__init__()
self.menu = menu
self.combo1 = QComboBox()
self.combo1.currentIndexChanged.connect(self.fill_cb2)
self.combo2 = QComboBox()
self.initUI()
self.fill_cb1()

def initUI(self):
self.setWindowTitle("Customer Information")
self.setFixedSize(600, 300)

main_layout = QVBoxLayout()
main_layout.setContentsMargins(30, 10, 30, 10)

layout1 = QHBoxLayout()
layout1.setContentsMargins(0, 20, 0, 20)

label1 = QLabel("Tracking | WO No:")
label1.setStyleSheet("font-size: 16px;")
label1.setAlignment(Qt.AlignCenter)
layout1.addWidget(label1)

text1 = QLineEdit()
text1.setStyleSheet("font-size: 16px;")
text1.setFixedSize(150, 26)

layout1.addWidget(text1)

layout1.addStretch()

label2 = QLabel("Date:")
label2.setStyleSheet("font-size: 16px;")
label2.setAlignment(Qt.AlignCenter)
layout1.addWidget(label2)

text2 = QDateEdit()
text2.setStyleSheet("font-size: 16px;")
text2.setAlignment(Qt.AlignCenter)
now = QDate.currentDate()
text2.setDate(now)
layout1.addWidget(text2)

layout2 = QVBoxLayout()
layout2.setContentsMargins(0, 0, 0, 30)

label3 = QLabel("Customer Name:")
label3.setStyleSheet("font-size: 16px;")
label3.setAlignment(Qt.AlignLeft)
layout2.addWidget(label3)

self.combo1.setStyleSheet("font-size: 20px;")
self.combo1.setFixedSize(540, 30)

layout2.addWidget(self.combo1)

layout2.addStretch(30)

label4 = QLabel("Customer Address:")
label4.setStyleSheet("font-size: 16px;")
label4.setAlignment(Qt.AlignLeft)
layout2.addWidget(label4)

self.combo2.setStyleSheet("font-size: 20px;")
self.combo2.setFixedSize(540, 30)
layout2.addWidget(self.combo2)

layout3 = QHBoxLayout()

layout3.addStretch(30)

btn1 = QPushButton("Next")
btn1.setStyleSheet("font-size: 16px;")
btn1.setFixedSize(125, 40)

btn2 = QPushButton("Back")
btn2.setStyleSheet("font-size: 16px;")
btn2.setFixedSize(125, 40)
btn2.clicked.connect(lambda: self.return2menu())

layout3.addWidget(btn2)
layout3.addWidget(btn1)

main_layout.addLayout(layout1)
main_layout.addLayout(layout2)
main_layout.addLayout(layout3)

self.setLayout(main_layout)

def return2menu(self):
self.hide()
self.menu.show()

def open_issue(self):
self.hide()

def fill_cb1(self):
conn = sqlite3.connect('my_service.db')
cur = conn.cursor()

query = "SELECT DISTINCT tick_cust FROM ticket ORDER BY tick_cust;"

results = cur.execute(query)

self.combo1.clear()
for result in results:
self.combo1.addItem(result[0])

self.combo1.setCurrentIndex(-1)
conn.close()

def fill_cb2(self):
self.combo2.clear()
value1 = self.combo1.currentText()

conn = sqlite3.connect('my_service.db')
cur = conn.cursor()

query = "SELECT DISTINCT tick_addr FROM ticket WHERE tick_cust = '%s' ORDER BY tick_addr;"

cur.execute(query, (value1,))

results = cur.fetchall()

self.combo2.clear()
for result in results:
print(f'{result[0]}')
self.combo2.addItem(result[0])

self.combo2.setCurrentIndex(-1)
conn.close()



Подробнее здесь: https://stackoverflow.com/questions/794 ... d-a-depend
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»