【问题标题】:View the contents of a database joined together and separated by a hyphen in combobox在组合框中查看连接在一起并用连字符分隔的数据库的内容
【发布时间】:2021-12-27 04:21:41
【问题描述】:

如何在组合框中(在 City1 和 City2 字段中)显示同一行的内容并结合破折号形成旅行目的地?

例如,我想在组合框中显示:伦敦-曼彻斯特,然后是巴黎-波尔多(两个目的地,所以组合框中有两个项目)。

在代码中我尝试解决它,但是你可以看到它是错误的,非常错误,你已经可以肉眼看到它。我是 Python 新手

CREATE TABLE "destinations" (
    "id"    INTEGER,
    "city1" INTEGER, #London, #Paris
    "city2" INTEGER, #Manchester, #Bordeaux
    PRIMARY KEY("id" AUTOINCREMENT)
);

1, London, Manchester
2, Paris, Bordeaux

Tkinter 窗口:

from tkinter import *
from tkinter import ttk
import tkinter as tk
import sqlite3

app=Tk()
app.title(" ")
app.geometry("300x200")

con = sqlite3.connect('database.db')
cursor = con.cursor()

combo=ttk.Combobox(app, width=21)
combo.place(x=30, y=20)
combo.config(values=combo)
combo.bind('<<ComboboxSelected>>')
combo.set("Select")
combos=["destinations"]

city1= cursor.execute "SELECT city1 FROM destinations"
city2= cursor.execute "SELECT city1 FROM destinations"

destinations = "city1" "-" "city2"

app.mainloop()
 

【问题讨论】:

  • 到目前为止您尝试了哪些方法,遇到了什么问题?
  • @DavidTorres0101 在此处提问之前,您需要真正尝试弄清楚自己的问题。见How to Ask
  • 要么在 SQL 语句中使用 SQLite concatenate operator || 组合这两个字段,要么使用 Python 字符串函数 .join()
  • @jezza_99 抱歉。我是这个网站的新手,刚开始使用 Python。我编辑了问题并展示了我的尝试,当然是
  • @acw1668 谢谢你的回答。理论上我理解,但实际上可能不是。我是 Python 新手。你能在答案中告诉我你的代码想法吗?我还编辑了问题,添加了我之前尝试过的尝试,但这当然是错误的。谢谢

标签: python sql python-3.x sqlite tkinter


【解决方案1】:

您可以通过任一方式组合这两个字段

  • 使用 SQLite concatenate operator ||
cursor.execute('SELECT city1 || "-" || city2 FROM destinations')
values = [row[0] for row in cursor]
  • 或使用 Python 字符串 .join()
cursor.execute('SELECT city1, city2 FROM destinations')
values = ['-'.join(row) for row in cursor]

然后将结果赋值给Comboboxvalues选项:

combo.config(values=values)

完整示例代码:

import tkinter as tk
from tkinter import ttk
import sqlite3

app = tk.Tk()
app.geometry('300x200')

cnx = sqlite3.connect('database.db')
cursor = cnx.cursor()

cursor.execute('SELECT city1 || "-" || city2 FROM destinations')
values = [row[0] for row in cursor]
'''
cursor.execute('SELECT city1, city2 FROM destinations')
values = ['-'.join(row) for row in cursor]
'''
print(values)

combo = ttk.Combobox(app, width=21, values=values, state='readonly')
combo.place(x=30, y=20)

app.mainloop()

【讨论】:

  • 并让它显示在组合框中?仅combo.config(值=值)就足够了,还是我必须写其他东西?例如我写了combos = [“destinations”]。谢谢
  • @DavidTorres0101 添加了示例代码。
  • 谢谢。你一直很善良。明天我会测试它并投票给你的答案,因为现在已经很晚了,我要睡觉了。谢谢。我明天回答
  • @你能帮我解决这个问题吗?我是新人,昨天我没有足够的分数来评价你的答案。如果您帮助我解决这个问题,我将对您的答案进行投票,因此请提高声誉并对您的其他答案(即这个)进行投票。谢谢stackoverflow.com/questions/69998707/…
  • 你能帮我解决这个问题吗?我是新人,昨天我没有足够的分数来评价你的答案。如果您帮助我解决这个问题,我将对您的答案进行投票,因此请提高声誉并对您的其他答案(即这个)进行投票。谢谢stackoverflow.com/questions/69998707/…
猜你喜欢
  • 2023-02-12
  • 2021-11-02
  • 1970-01-01
  • 2023-01-03
  • 2019-12-20
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
相关资源
最近更新 更多