Python tkiner, два текстовых поля с полосами прокрутки x и y для обоих - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь создать gui, который имеет два отдельных текстовых вывода с горизонтальной и вертикальной полосами прокрутки для каждого текстового поля, которые прикреплены к правому и нижнему краям каждого соответствующего текста windows. Я борюсь с тем, как сделать это с сеткой tkinter, и любая помощь будет оценена.

import tkinter as tk


class WeatherGUI(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)


        # Horizontal (x) Scroll bar
        self.xscrollbar = tk.Scrollbar(self, orient="horizontal")
        self.xscrollbar.grid(column=5, row=10, sticky="we")

        # Vertical (y) Scroll Bar
        self.yscrollbar = tk.Scrollbar(self)
        self.yscrollbar.grid(column=5, row=10, sticky='ns')

        self.xscrollbar2 = tk.Scrollbar(self, orient="horizontal")
        self.xscrollbar2.grid(column=9, row=10, sticky="we")

        # Vertical (y) Scroll Bar
        self.yscrollbar2 = tk.Scrollbar(self)
        self.yscrollbar2.grid(column=9, row=10, sticky='ns')


        self.NSW_actual_text = tk.Text(self, width=50, wrap = "none", xscrollcommand=self.xscrollbar.set, yscrollcommand=self.yscrollbar.set,)
        self.NSW_actual_text.grid(column=0, columnspan=4, row= 8,padx=(20, 10))

        self.NSW_forecast_text = tk.Text(self, width=50, wrap = "none", xscrollcommand=self.xscrollbar.set, yscrollcommand=self.yscrollbar.set)
        self.NSW_forecast_text.grid(column=8, columnspan=4, row= 8,padx=(20, 10))

        self.xscrollbar.config(command=self.NSW_actual_text.xview)
        self.yscrollbar.config(command=self.NSW_actual_text.yview)


        self.xscrollbar2.config(command=self.NSW_forecast_text.xview)
        self.yscrollbar2.config(command=self.NSW_forecast_text.yview)



        self.btn1 = tk.Button(self, text="Generate NWS Actual", command=self.GenerateNWSActual)
        self.btn1.grid(column=1, row=0)


        self.btn2 = tk.Button(self, text="Generate NWS Forecast", command=self.GenerateNWSForecast)
        self.btn2.grid(column=10, row=0)


    def GenerateNWSActual(self):
        self.NSW_actual_text.insert('1.0', "This is where actual weather would go")


    def GenerateNWSForecast(self):
        self.NSW_forecast_text.insert('1.0', "this is where forecast weather would go")




app = WeatherGUI()
app.mainloop()

1 Ответ

1 голос
/ 06 апреля 2020

Следующий пример позволяет вам прикрепить две функциональные полосы прокрутки (x, y) к текстовому виджету

from tkinter import *
# Create Window
root = Tk()
# Create ScrollBars
xScrollbar = Scrollbar(root, orient=HORIZONTAL) 
yScrollbar = Scrollbar(root, orient=VERTICAL)
# Create Text Widget with scroll commands
TextWidget = Text(root, xscrollcommand=xScrollbar, yscrollcommand=yScrollbar)
# Package Componets
xScrollbar.pack(side=BOTTOM, fill=X)
yScrollbar.pack(side=RIGHT, fill=Y)
TextWidget.pack(fill=BOTH, expand=20)
# Assign Scrollbars with TextWidget
xScollbar.config(command=TextWidget.xview)
yScollbar.config(command=TextWidget.yview)

Вы можете использовать этот пример для обоих ваших текстовых виджетов в вашем приложении погоды.

...