Tkinter
from tkinter import *
root=Tk()
a=[{"name":"北京","position":"n"},
{"name":"天津","position":"s"},
{"name":"上海","position":"e"},
{"name":"重庆","position":"w"},
{"name":"退出","position":"center"}]
def gyl():
for i in range(len(a)) :
b=Button(root,
text=a["name"],
anchor=a["position"],
width=34,
height=8,
relief="groove",
borderwidth=7,
font="汉仪雪峰体简 13 bold",
background="cornsilk",
foreground="limegreen")
b.pack(expand=True)
gyl()
mainloop()
这个程序运行后,生成5个按钮,分别为:北京、天津、上海、重庆和退出。
我想:生成2个按钮,前4个放置在一个按钮中,退出为一个按钮,如图所示。
哈哈,这个任务听起来挺有趣呀!我们来一步步解决这个问题。你的要求是生成两个按钮,其中一个按钮包含 "北京"、"天津"、"上海" 和 "重庆",另一个按钮是 "退出"。
首先,我们需要创建一个包含前四个城市的按钮,然后再创建一个“退出”按钮。为了将前四个城市放在一个按钮上,我们可以把这些城市名拼接成一个字符串。
以下是修改后的代码:
from tkinter import *
# 初始化Tk对象
root = Tk()
# 定义包含城市的列表
a = ["北京", "天津", "上海", "重庆"]
def gyl():
# 第一个按钮,包含前四个城市
cities_text = ", ".join(a)# 把城市名拼接成一个字符串,用逗号分隔
b1 = Button(root,
text=cities_text,# 使用拼接的城市名作为按钮文本
anchor="center",
width=34,
height=8,
relief="groove",
borderwidth=7,
font="汉仪雪峰体简 13 bold",
background="cornsilk",
foreground="limegreen")
b1.pack(expand=True)
# 第二个按钮,退出按钮
b2 = Button(root,
text="退出",
anchor="center",
width=34,
height=8,
relief="groove",
borderwidth=7,
font="汉仪雪峰体简 13 bold",
background="cornsilk",
foreground="limegreen",
command=root.quit)# 点击按钮退出程序
b2.pack(expand=True)
# 调用函数生成按钮
gyl()
# 进入主循环
mainloop()
这样,我们就能生成两个按钮,一个按钮包含前四个城市的名字,另一个按钮是“退出”按钮。这种方式简单直接,效果也不错,希望你喜欢这个解决方案!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-7-1 16:07
哈哈,这个任务听起来挺有趣呀!我们来一步步解决这个问题。你的要求是生成两个按钮,其中一个按钮包含 "北 ...
生成的第一个按钮中【北京】【天津】【上海】【重庆】所处的位置不对呀 ? dragov 发表于 2024-07-01 16:13
bg4.png
生成的第一个按钮中【北京】【天津】【上海 ...
哈哈,我懂了,你是希望四个城市名在按钮中能更好地展示对吧?要让这些城市名在按钮中有更好的布局,我们可以使用换行符 `\n` 来分隔每个城市名,这样它们就能垂直排列了。
以下是修改后的代码:
from tkinter import *
# 初始化Tk对象
root = Tk()
# 定义包含城市的列表
a = ["北京", "天津", "上海", "重庆"]
def gyl():
# 第一个按钮,包含前四个城市,每个城市名用换行符分隔
cities_text = "\n".join(a)# 把城市名用换行符分隔
b1 = Button(root,
text=cities_text,# 使用拼接的城市名作为按钮文本
anchor="center",
width=34,
height=8,
relief="groove",
borderwidth=7,
font="汉仪雪峰体简 13 bold",
background="cornsilk",
foreground="limegreen")
b1.pack(expand=True)
# 第二个按钮,退出按钮
b2 = Button(root,
text="退出",
anchor="center",
width=34,
height=8,
relief="groove",
borderwidth=7,
font="汉仪雪峰体简 13 bold",
background="cornsilk",
foreground="limegreen",
command=root.quit)# 点击按钮退出程序
b2.pack(expand=True)
# 调用函数生成按钮
gyl()
# 进入主循环
mainloop()
这样,四个城市名就会在第一个按钮中垂直排列。希望这次的布局符合你的要求!如果还有其他调整需求,尽管告诉我哦!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-7-1 16:14
哈哈,我懂了,你是希望四个城市名在按钮中能更好地展示对吧?要让这些城市名在按钮中有更好的布局,我 ...
生成的第一个按钮中【北京】【天津】【上海】【重庆】所处的位置不对 !
【北京】位于按钮的顶部中间位置
【天津】位于按钮的底部中间位置
【上海】位于按钮的右边中间位置
【重庆】位于按钮的左边中间位置 dragov 发表于 2024-07-01 16:22
bg4.png
生成的第一个按钮中【北京】【天津】【上 ...
哈哈,明白了,你希望将每个城市名放置在按钮的特定位置:北京在顶部中间,天津在底部中间,上海在右边中间,重庆在左边中间。为实现这种布局,我们可以使用 `place` 方法来精确定位每个城市名的标签。
下面是具体实现的代码:
from tkinter import *
# 初始化Tk对象
root = Tk()
root.geometry("400x400")# 设置窗口大小
def gyl():
# 创建一个Frame来容纳城市标签
frame = Frame(root, width=200, height=200, relief="groove", borderwidth=7, background="cornsilk")
frame.pack(expand=True)
# 创建并放置每个城市的Label
label_bj = Label(frame, text="北京", font="汉仪雪峰体简 13 bold", background="cornsilk", foreground="limegreen")
label_bj.place(relx=0.5, rely=0, anchor='n')# 北京在顶部中间
label_tj = Label(frame, text="天津", font="汉仪雪峰体简 13 bold", background="cornsilk", foreground="limegreen")
label_tj.place(relx=0.5, rely=1, anchor='s')# 天津在底部中间
label_sh = Label(frame, text="上海", font="汉仪雪峰体简 13 bold", background="cornsilk", foreground="limegreen")
label_sh.place(relx=1, rely=0.5, anchor='e')# 上海在右边中间
label_cq = Label(frame, text="重庆", font="汉仪雪峰体简 13 bold", background="cornsilk", foreground="limegreen")
label_cq.place(relx=0, rely=0.5, anchor='w')# 重庆在左边中间
# 创建退出按钮
exit_button = Button(root,
text="退出",
anchor="center",
width=34,
height=8,
relief="groove",
borderwidth=7,
font="汉仪雪峰体简 13 bold",
background="cornsilk",
foreground="limegreen",
command=root.quit)# 点击按钮退出程序
exit_button.pack(expand=True)
# 调用函数生成按钮
gyl()
# 进入主循环
mainloop()
在这个代码中,我们使用了一个 `Frame` 来容纳城市标签,并用 `place` 方法在框架内精确定位每个城市名。这样你就能得到一个按钮框架,其中城市名按你指定的位置排列。希望这个方案符合你的要求!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-7-1 16:23
哈哈,明白了,你希望将每个城市名放置在按钮的特定位置:北京在顶部中间,天津在底部中间,上海在右边 ...
要求在按钮中来实现! dragov 发表于 2024-07-01 17:31
bg4.png
要求在按钮中来实现!
明白了,你希望在单个按钮中实现城市名的特定布局。由于按钮本身不支持在内部精确放置多个控件,我们可以使用一种“变通”的方法:在按钮的文本中插入特定位置的空格和换行符来大致实现这种效果。
尽管这种方法可能没有完全精确的布局,但它可以近似地达到你的要求。下面是修改后的代码:
from tkinter import *
# 初始化Tk对象
root = Tk()
root.geometry("400x400")# 设置窗口大小
# 定义包含城市的列表
a = ["北京", "天津", "上海", "重庆"]
def gyl():
# 在按钮文本中设置城市名的近似位置
button_text = "北京\n\n\n重庆\t\t\t上海\n\n\n天津"
b1 = Button(root,
text=button_text,
anchor="center",
width=34,
height=8,
relief="groove",
borderwidth=7,
font="汉仪雪峰体简 13 bold",
background="cornsilk",
foreground="limegreen")
b1.pack(expand=True)
# 第二个按钮,退出按钮
b2 = Button(root,
text="退出",
anchor="center",
width=34,
height=8,
relief="groove",
borderwidth=7,
font="汉仪雪峰体简 13 bold",
background="cornsilk",
foreground="limegreen",
command=root.quit)# 点击按钮退出程序
b2.pack(expand=True)
# 调用函数生成按钮
gyl()
# 进入主循环
mainloop()
在这个代码中,我们通过在按钮文本中使用换行符 (`\n`) 和制表符 (`\t`) 来大致控制每个城市名的位置。虽然这并不是精确的定位,但在一定程度上可以实现你所描述的布局效果。如果有更高的布局精度需求,可能需要使用其他GUI工具或更复杂的实现方法。希望这个方案能满足你的要求!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 只能分成多个按钮。一个按钮只能绑定一个函数
页:
[1]