我在简单的 class 中看不到组合框。怎么解决?
I can't see comboboxes in a simple class. How to solve?
我专门为 2 个组合框创建了一个 class,但我看不到它们。我没有收到错误,但是没有显示 2 个组合框。
我不需要整个 window 的 class,但我只需要那 2 个组合框的 class。
我做错了什么?我该如何解决?你能带我来吗?谢谢
import tkinter as tk
from tkinter import ttk
import sqlite3
from tkinter import *
root = tk.Tk()
root.title("Tab Widget")
root.geometry('230x330')
conn = sqlite3.connect('database')
cursor = conn.cursor()
class seleziona_squadra():
def __init__(self):
self.conn = sqlite3.connect('database')
self.cursor = self.conn.cursor()
def fill_voyage(self):
self.cursor.execute('SELECT DISTINCT campionato FROM BASE_ProssimaGiornata')
self.result=[row[0] for row in self.cursor]
return self.result
def combo_campionato(self, event=None):
global campionato
self.val = self.campionato.get()
self.cursor.execute('SELECT team_home||"-"||team_away FROM BASE_ProssimaGiornata WHERE Campionato = ?', (self.val,))
self.values = [row[0] for row in self.cursor]
global partita
self.partita['value'] = self.values
return self.values
def seleziona(self, event=None):
self.select_partita = self.partita.get()
if self.select_partita:
global squadra_sinistra
global squadra_destra
self.squadra_sinistra, self.squadra_destra = self.select_partita.split('-')
self.campionato=ttk.Combobox(root, width = 25)
self.campionato['value'] = self.fill_voyage()
self.campionato.bind('<<ComboboxSelected>>', self.combo_campionato)
self.campionato.place(x=1, y=1)
self.partita=ttk.Combobox(root, width = 25)
self.partita.place(x=1, y=30)
self.partita.bind('<<ComboboxSelected>>', self.seleziona)
self.combo_campionato()
self.seleziona()
root.mainloop()
您的组合框创建代码必须在 class 初始化函数中。然后在您的主代码中,您创建了 class 的一个实例,它自动显示 class 创建的 UI 个元素。一种更简洁的方法是将 class 放在另一个文件中,或者放在代码的末尾或开头。它不必在您的代码中间。
这是代码(我注释掉了导致错误的地方)
import tkinter as tk
from tkinter import ttk
import sqlite3
from tkinter import *
root = tk.Tk()
root.title("Tab Widget")
root.geometry('230x330')
conn = sqlite3.connect('database')
cursor = conn.cursor()
class seleziona_squadra():
def __init__(self):
self.conn = sqlite3.connect('database')
self.cursor = self.conn.cursor()
self.campionato=ttk.Combobox(root, width = 25)
self.campionato['value'] = self.fill_voyage()
self.campionato.bind('<<ComboboxSelected>>', self.combo_campionato)
self.campionato.place(x=1, y=1)
self.partita=ttk.Combobox(root, width = 25)
self.partita.place(x=1, y=30)
self.partita.bind('<<ComboboxSelected>>', self.seleziona)
self.combo_campionato()
self.seleziona()
def fill_voyage(self):
# self.cursor.execute('SELECT DISTINCT campionato FROM BASE_ProssimaGiornata')
self.result=[row[0] for row in self.cursor]
return self.result
def combo_campionato(self, event=None):
global campionato
self.val = self.campionato.get()
# self.cursor.execute('SELECT team_home||"-"||team_away FROM BASE_ProssimaGiornata WHERE Campionato = ?', (self.val,))
self.values = [row[0] for row in self.cursor]
global partita
self.partita['value'] = self.values
return self.values
def seleziona(self, event=None):
self.select_partita = self.partita.get()
if self.select_partita:
global squadra_sinistra
global squadra_destra
self.squadra_sinistra, self.squadra_destra = self.select_partita.split('-')
seleziona_squadra()
root.mainloop()
我专门为 2 个组合框创建了一个 class,但我看不到它们。我没有收到错误,但是没有显示 2 个组合框。
我不需要整个 window 的 class,但我只需要那 2 个组合框的 class。
我做错了什么?我该如何解决?你能带我来吗?谢谢
import tkinter as tk
from tkinter import ttk
import sqlite3
from tkinter import *
root = tk.Tk()
root.title("Tab Widget")
root.geometry('230x330')
conn = sqlite3.connect('database')
cursor = conn.cursor()
class seleziona_squadra():
def __init__(self):
self.conn = sqlite3.connect('database')
self.cursor = self.conn.cursor()
def fill_voyage(self):
self.cursor.execute('SELECT DISTINCT campionato FROM BASE_ProssimaGiornata')
self.result=[row[0] for row in self.cursor]
return self.result
def combo_campionato(self, event=None):
global campionato
self.val = self.campionato.get()
self.cursor.execute('SELECT team_home||"-"||team_away FROM BASE_ProssimaGiornata WHERE Campionato = ?', (self.val,))
self.values = [row[0] for row in self.cursor]
global partita
self.partita['value'] = self.values
return self.values
def seleziona(self, event=None):
self.select_partita = self.partita.get()
if self.select_partita:
global squadra_sinistra
global squadra_destra
self.squadra_sinistra, self.squadra_destra = self.select_partita.split('-')
self.campionato=ttk.Combobox(root, width = 25)
self.campionato['value'] = self.fill_voyage()
self.campionato.bind('<<ComboboxSelected>>', self.combo_campionato)
self.campionato.place(x=1, y=1)
self.partita=ttk.Combobox(root, width = 25)
self.partita.place(x=1, y=30)
self.partita.bind('<<ComboboxSelected>>', self.seleziona)
self.combo_campionato()
self.seleziona()
root.mainloop()
您的组合框创建代码必须在 class 初始化函数中。然后在您的主代码中,您创建了 class 的一个实例,它自动显示 class 创建的 UI 个元素。一种更简洁的方法是将 class 放在另一个文件中,或者放在代码的末尾或开头。它不必在您的代码中间。
这是代码(我注释掉了导致错误的地方)
import tkinter as tk
from tkinter import ttk
import sqlite3
from tkinter import *
root = tk.Tk()
root.title("Tab Widget")
root.geometry('230x330')
conn = sqlite3.connect('database')
cursor = conn.cursor()
class seleziona_squadra():
def __init__(self):
self.conn = sqlite3.connect('database')
self.cursor = self.conn.cursor()
self.campionato=ttk.Combobox(root, width = 25)
self.campionato['value'] = self.fill_voyage()
self.campionato.bind('<<ComboboxSelected>>', self.combo_campionato)
self.campionato.place(x=1, y=1)
self.partita=ttk.Combobox(root, width = 25)
self.partita.place(x=1, y=30)
self.partita.bind('<<ComboboxSelected>>', self.seleziona)
self.combo_campionato()
self.seleziona()
def fill_voyage(self):
# self.cursor.execute('SELECT DISTINCT campionato FROM BASE_ProssimaGiornata')
self.result=[row[0] for row in self.cursor]
return self.result
def combo_campionato(self, event=None):
global campionato
self.val = self.campionato.get()
# self.cursor.execute('SELECT team_home||"-"||team_away FROM BASE_ProssimaGiornata WHERE Campionato = ?', (self.val,))
self.values = [row[0] for row in self.cursor]
global partita
self.partita['value'] = self.values
return self.values
def seleziona(self, event=None):
self.select_partita = self.partita.get()
if self.select_partita:
global squadra_sinistra
global squadra_destra
self.squadra_sinistra, self.squadra_destra = self.select_partita.split('-')
seleziona_squadra()
root.mainloop()