【问题标题】:How to find the third "." in a string, then changing the value of character behind it如何找到第三个“。”在一个字符串中,然后改变它后面的字符的值
【发布时间】:2020-02-15 13:18:00
【问题描述】:

我有两个输入小部件,输入从entry_ip 复制到entry_gatewayentry_gateway 仍然可以更改而不影响entry_ip

entry_ip 输入是用户 ipv4-address eks: 198.164.65.10

我希望 entry_ip 删除最后一个点之后的数字。 198.164.65.x 并插入“1”。

from tkinter import *

my_window = Tk()
my_window.title("IPV4 Configurator")
my_window.configure(background="#2B7A78")
my_window.geometry("400x375+480+340")
my_window.resizable(0, 0)

# Create labels

Label(my_window, text="IP ADDRESS:", bg="#2B7A78", fg="#17252A", font="Caliban 14 bold") \
    .place(x=35, y=70)

Label(my_window, text="SUBNET MASK:", bg="#2B7A78", fg="#17252A", font="Caliban 14 bold") \
    .place(x=35, y=135)

Label(my_window, text="GATEWAY:", bg="#2B7A78", fg="#17252A", font="Caliban 14 bold") \
    .place(x=35, y=200)

# Create StringVar


var_ip = StringVar()
var_mask = StringVar()
var_gateway = StringVar()


# Break function


def focus_next_widget(event):
    event.widget.tk_focusNext().focus()
    return "break"


# Get entry input


def on_entry_input(event):
    text = event.widget.get()
    entry_gateway.delete(0, 'end')
    entry_gateway.insert('1', text)


def user_input_ip():
    input_ip = entry_ip.get()
    display_ip = input_ip
    var_ip.set(display_ip)


# Create ip entry


entry_ip = Entry(my_window, font="Helvetica 15", textvariable=var_ip)
entry_ip.place(x=35, y=100, width=158, height=30)
entry_ip.bind("<Tab>", focus_next_widget)
entry_ip.bind('<KeyRelease>', on_entry_input)


def user_input_mask():
    input_mask = entry_mask.get()
    display_mask = input_mask
    var_mask.set(display_mask)


# Create mask entry


entry_mask = Entry(my_window, font="Helvetica 15", textvariable=var_mask)
entry_mask.place(x=35, y=165, width=158, height=30)
entry_mask.bind("<Tab>", focus_next_widget)
entry_mask.insert(END, "255.255.255.255")


def user_input_gateway():
    input_gateway = entry_gateway.get()
    display_gateway = input_gateway
    var_gateway.set(display_gateway)


# Create gateway entry


entry_gateway = Entry(my_window, font="Helvetica 15", textvariable=var_gateway)
entry_gateway.place(x=35, y=230, width=158, height=30)
entry_gateway.bind("<Tab>", focus_next_widget) 

【问题讨论】:

  • 仅更改 entry_ip 中的最后一个数字:new_ip = re.sub(r"\d+$", "1", entry_ip)

标签: python tkinter tkinter-entry


【解决方案1】:
whatever = '.'.join(entry_ip.split('.')[:3] + ['1'])

【讨论】:

  • 其实不用拆分。 ip.replace('x',1)
  • @Ch3steR--我认为他的例子中的 x 代表任何数字而不是 x。
  • 我相信x 是作为“任何值”的占位符; OP中的这句话:“entry_ip the input is users ipv4-address eks: 198.164.65.10”似乎支持我的信念。
  • @Ch3steR 有正确的理解。 X 可以是任意数字
  • 说真的,我不知道你想要用它做什么。您写了 我希望 entry_ip 删除最后一个点之后的数字。 198.164.65.x 并插入“1”。 - 也许对你来说如何处理结果很明显,但对其他人来说却不是。如果您打算将这个更改后的 IP 地址放回 entry_ip 中,请执行此操作,如下所示:entry_ip = '.'.join(entry_ip.split('.')[:3] + ['1'])
【解决方案2】:

使用正则表达式

import re
new_ip = re.sub(r"\d+$", "1", entry_ip)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    相关资源
    最近更新 更多