在tkinter中可以有一个垂直方向的按钮吗?

时间:2016-06-24 07:55:47

标签: python button tkinter

是否可以垂直定位tk.Buttonttk.Button?想要以tk.Scrollbar的方式定位self.scrlbr = tk.Scrollbar(master, orient = vertical)

尝试了tk.Button(*args).pack(fill = tk.Y),但它没有提供所需的效果 - 按钮仍然是水平方向的。

在手册页中找不到任何内容,但也许有一些不太明确的方法?

2 个答案:

答案 0 :(得分:3)

按钮小部件不提供此选项,但您可以模拟按钮小部件以在需要时获得效果。如上所述,一种方法是使用包含旋转文本的图像。根据您的主题,您还可以使用canvas创建一个按钮,该按钮允许您使用angle选项旋转自身绘制的文本。这在Windows主题上看起来很奇怪,但在使用的小部件是Tk(而不是ttk小部件)或ttk时看起来很正常,前提是主题是使用Tk绘制的元素(unix上的默认值)。

它看起来如何的粗略演示:

enter image description here

import tkinter as tk
import tkinter.font as tkfont
main = tk.Tk()
font = tkfont.nametofont("TkDefaultFont")
label = "Click Me"
height = font.measure(label) + 4
width = font.metrics()['linespace'] + 4
canvas = tk.Canvas(main, height=height, width=width, background="SystemButtonFace", borderwidth=2, relief="raised")
canvas.create_text((4, 4), angle="90", anchor="ne", text=label, fill="SystemButtonText", font=font)
canvas.bind("<ButtonPress-1>", lambda ev: ev.widget.configure(relief="sunken"))
canvas.bind("<ButtonRelease-1>", lambda ev: ev.widget.configure(relief="raised"))
canvas.place(x=5, y=height + 10)
main.mainloop()

答案 1 :(得分:0)

我找到了一个更简单的答案。 例如,假设您有 4 个水平的 ttk.buttons,并且您希望在它们旁边放置一个垂直的 ttk.button 让我们调用我们的新按钮配置。 对按钮使用网格方法,第一个垂直按钮位于 col=0, row=0 第二个在 col=0, row=1 等

创建一个按钮 with=4 text=C\no\nn\nf\ni\ng\n, grid at col=1, row=0, rowspan=4,

给你。使用标准 tkinter 简单易用。